Практика. Декораторы, ошибки и исключения

Исключения представляют собой еще один вид ошибок, которые проявляются в зависимости от наличия обстоятельств, меняющих ход выполнения программы. Исключения являются ошибками времени выполнения, возникающие в процессе выполнения программы и связанные с некорректностью переданных в программу данных, недоступностью ресурсов и т.д.

Содержимое разработки

Тема № 3.2 Декораторы, ошибки и исключения Практика

Тема № 3.2

Декораторы, ошибки и исключения

Практика

Содержание практики

Содержание практики

  • Решение практических задач с декораторами функций.
  • Работа по обработки исключений.
  • Блоки try / except.
  • Обработка исключений.
  • Блоки finally и else.
0: p = p * x count = count + 1 if count 0: print(x) print(p) else: print('NO') На обработку поступает последовательность из 10 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 . Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Найдите все ошибки в этой программе (их ровно 4). Примечание 1.  Число x не превышает по абсолютной величине 10 6 , если −10 6 ≤x ≤10 6 . Примечание 2.  При необходимости вы можете добавить необходимые строки кода. count = 0 p = 1 for i in range(1,11): x = int(input()) if x -1: p = p * x count = count + 1 if count 0: print(count) print(p) else: print('NO')" width="640"

Задача «Ревью кода 1»

count = 0

p = 0

for i in range(1, 10):

x = int(input())

if x 0:

p = p * x

count = count + 1

if count 0:

print(x)

print(p)

else:

print('NO')

На обработку поступает последовательность из 10 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 . Нужно написать программу, которая выводит на экран количество неотрицательных чисел последовательности и их произведение. Если неотрицательных чисел нет, требуется вывести на экран «NO». Найдите все ошибки в этой программе (их ровно 4).

Примечание 1.  Число x не превышает по абсолютной величине 10 6 , если −10 6 ≤x ≤10 6 .

Примечание 2.  При необходимости вы можете добавить необходимые строки кода.

count = 0

p = 1

for i in range(1,11):

x = int(input())

if x -1:

p = p * x

count = count + 1

if count 0:

print(count)

print(p)

else:

print('NO')

mx: mx = x print(s) print(mx) На обработку поступает последовательность из 10 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 . Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное отрицательное число в последовательности. Если отрицательных чисел нет, требуется вывести на экран «NO». Найдите все ошибки в этой программе (их ровно 5). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. mx = - pow(10, 6) s = 0 for i in range(1, 11): x = int(input()) if x s += x if 0 x mx: mx = x if s print(s) print(mx) else: print('NO')" width="640"

Задача «Ревью кода 2»

mx = 0

s = 0

for i in range(11):

x = int(input())

if x

s = x

if x mx:

mx = x

print(s)

print(mx)

На обработку поступает последовательность из 10 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 .

Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное отрицательное число в последовательности. Если отрицательных чисел нет, требуется вывести на экран «NO».

Найдите все ошибки в этой программе (их ровно 5). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

mx = - pow(10, 6)

s = 0

for i in range(1, 11):

x = int(input())

if x

s += x

if 0 x mx:

mx = x

if s

print(s)

print(mx)

else:

print('NO')

Задача «Ревью кода 3» На обработку поступает последовательность из 7 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 . Нужно написать программу, которая подсчитывает и выводит сумму всех чётных чисел последовательности или 0, если чётных чисел в последовательности нет. Программист торопился и написал программу неправильно. Найдите все ошибки в этой программе (их ровно 4). s = 0 for i in range(7):  n = int(input())  if n % 2 == 0:  s = s + n print(s) s = 1 for i in range(1, 7):  n = input()  if i % 2 == 0:  s = s + n print(s)

Задача «Ревью кода 3»

На обработку поступает последовательность из 7 целых чисел. Известно, что вводимые числа по абсолютной величине не превышают 10 6 .

Нужно написать программу, которая подсчитывает и выводит сумму всех чётных чисел последовательности или 0, если чётных чисел в последовательности нет. Программист торопился и написал программу неправильно.

Найдите все ошибки в этой программе (их ровно 4).

s = 0

for i in range(7):

n = int(input())

if n % 2 == 0:

s = s + n

print(s)

s = 1

for i in range(1, 7):

n = input()

if i % 2 == 0:

s = s + n

print(s)

0: digit = n % 10 if digit % 3 == 0: if digit max _ digit: max _ digit = digit n //= 10 if max _ digit == -1: print('NO') else: print(max _ digit) n = int(input()) max _ digit = n % 10 while n 0: digit = n % 10 if digit % 3 == 0: if digit digit = max _ digit n = n % 10 if max _ digit == 0: print('NO') else: print(max _ digit)" width="640"

Задача «Ревью кода 4»

На обработку поступает натуральное число. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист торопился и написал программу неправильно.

Найдите все ошибки в этой программе (их ровно 5).

Примечание 1. Число 0 делится на любое натуральное число.

Примечание 2 . При необходимости вы можете добавить нужные строки кода.

n = int(input())

max _ digit = -1

while n 0:

digit = n % 10

if digit % 3 == 0:

if digit max _ digit:

max _ digit = digit

n //= 10

if max _ digit == -1:

print('NO')

else:

print(max _ digit)

n = int(input())

max _ digit = n % 10

while n 0:

digit = n % 10

if digit % 3 == 0:

if digit

digit = max _ digit

n = n % 10

if max _ digit == 0:

print('NO')

else:

print(max _ digit)

9: n //= 10 print(n) n = int(input()) while n 0: n %= 10 print(n)" width="640"

Задача «Ревью кода 5»

На обработку поступает натуральное число. Нужно написать программу, которая выводит на экран его первую (старшую) цифру. Программист торопился и написал программу неправильно.

Найдите все ошибки в этой программе (их ровно 2). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

n = int(input())

while n 9:

n //= 10

print(n)

n = int(input())

while n 0:

n %= 10

print(n)

= 10: while n 0: digit = n % 10 digit = n % 10 product = product * digit product = product * digit n //= 10 n //= 10 print(product) print(product)" width="640"

Задача «Ревью кода 6»

На обработку поступает натуральное число. Нужно написать программу, которая выводит на экран произведение цифр введенного числа. Программист торопился и написал программу неправильно.

Найдите все ошибки в этой программе (их ровно 3). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

n = input()

n = int(input())

product = n % 10

product = 1

while n = 10:

while n 0:

digit = n % 10

digit = n % 10

product = product * digit

product = product * digit

n //= 10

n //= 10

print(product)

print(product)

Задача «Ревью кода 7» total = 0 with open(data.txt, encoding='utf-8') as file:  for _ in file.readlines:  total == total + 1 print(total) Дан файл data.txt. Требовалось написать программу, которая определяет, сколько строк содержится в данном файле, и выводит полученный результат. Программист торопился и написал программу неправильно. Найдите и исправьте все ошибки, допущенные в этой программе (их ровно 3). Примечание . Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. total = 0 with open('data.txt', encoding='utf-8') as file:  for _ in file.readlines():  total = total + 1 print(total)

Задача «Ревью кода 7»

total = 0

with open(data.txt, encoding='utf-8') as file:

for _ in file.readlines:

total == total + 1

print(total)

Дан файл data.txt. Требовалось написать программу, которая определяет, сколько строк содержится в данном файле, и выводит полученный результат. Программист торопился и написал программу неправильно.

Найдите и исправьте все ошибки, допущенные в этой программе (их ровно 3).

Примечание . Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

total = 0

with open('data.txt', encoding='utf-8') as file:

for _ in file.readlines():

total = total + 1

print(total)

Задача «Подели и возведи» Необходимо ввести два целых числа. Если числа делятся друг на друга, то поделить и возвести результат в квадрат, иначе вывести сообщение «Что-то пошло не так…». Напишите такую программу и определите виды ошибок подходящие для данной задачи. Примечание. Обязательно использование try-except. Результат: try:  a = input(

Задача «Подели и возведи»

Необходимо ввести два целых числа. Если числа делятся друг на друга, то поделить и возвести результат в квадрат, иначе вывести сообщение «Что-то пошло не так…».

Напишите такую программу и определите виды ошибок подходящие для данной задачи.

Примечание. Обязательно использование try-except.

Результат:

try:

a = input("Введите первое число: ")

b = input("Введите второе число: ")

result = int(a)/int(b)

except (ValueError, ZeroDivisionError):

print("Что-то пошло не так...")

else:

print("Результат в квадрате: ", result**2)

Задача «Вот и сказочке конец, а кто слушал – молодец» Необходимо ввести два целых числа. Если числа делятся друг на друга, то поделить и возвести результат в квадрат, иначе вывести сообщение «Что-то пошло не так…». Также в любом случае вывести в конце сообщение «Вот и сказочке конец, а кто слушал – молодец» Напишите такую программу и определите виды ошибок подходящие для данной задачи. Примечание. Обязательно использование try-except. Результат: try:  a = input(

Задача «Вот и сказочке конец, а кто слушал – молодец»

Необходимо ввести два целых числа. Если числа делятся друг на друга, то поделить и возвести результат в квадрат, иначе вывести сообщение «Что-то пошло не так…».

Также в любом случае вывести в конце сообщение «Вот и сказочке конец, а кто слушал – молодец»

Напишите такую программу и определите виды ошибок подходящие для данной задачи.

Примечание. Обязательно использование try-except.

Результат:

try:

a = input("Введите первое число: ")

b = input("Введите второе число: ")

result = int(a)/int(b)

except (ValueError, ZeroDivisionError):

print("Что-то пошло не так...")

else:

print("Результат в квадрате: ", result**2)

finally:

print("Вот и сказочке конец, а кто слушал - молодец.")

Задача «float или не float – вот в чём вопрос» Составьте список, содержащий 3-5 элементов. В интерактивном режиме запросите у пользователя значения для каждого элемента списка, составьте соответствующий словарь. Алгоритм должен содержать проверку одинаковости типов вводимых значений. Под проверкой одинаковости подразумевается попытка преобразования вводимых данных в числовой формат: float, а в случае невозможности преобразовать остаётся str. Результат: a = ['first', 'second', 'third', 'fourth', 'fifth'] b = [] for i in range(5):  print(f'Введите аргумент № {i + 1}')  x = input()  try:  x = float(x)  except ValueError:  print('Упсс - нельзя привести к числу! записываем аргумент как есть' )  b.append(x) c = dict(zip(a, b)) print(c)

Задача «float или не float – вот в чём вопрос»

Составьте список, содержащий 3-5 элементов. В интерактивном режиме запросите у пользователя значения для каждого элемента списка, составьте соответствующий словарь. Алгоритм должен содержать проверку одинаковости типов вводимых значений. Под проверкой одинаковости подразумевается попытка преобразования вводимых данных в числовой формат: float, а в случае невозможности преобразовать остаётся str.

Результат:

a = ['first', 'second', 'third', 'fourth', 'fifth']

b = []

for i in range(5):

print(f'Введите аргумент № {i + 1}')

x = input()

try:

x = float(x)

except ValueError:

print('Упсс - нельзя привести к числу! записываем аргумент как есть' )

b.append(x)

c = dict(zip(a, b))

print(c)

Задача «Полужирный, курсив, подчёркивание» Напишите программу на Python для создания цепочки декораторов функций (полужирный, курсив, подчеркивание).

Задача «Полужирный, курсив, подчёркивание»

Напишите программу на Python для создания цепочки декораторов функций (полужирный, курсив, подчеркивание).

"hello world"

Результат:

def make _ bold(fn):

def wrapped():

return "" + fn() + ""

return wrapped

def make _ italic(fn):

def wrapped():

return "" + fn() + ""

return wrapped

def make _ underline(fn):

def wrapped():

return "" + fn() + ""

return wrapped

@make _ bold

@make _ italic

@make _ underline

def hello():

return "hello world"

print(hello())

Ваши вопросы

Ваши

вопросы

Рефлексия Что было самым интересным на сегодняшнем занятии? Что было самым сложным?

Рефлексия

  • Что было самым интересным на сегодняшнем занятии?
  • Что было самым сложным?

Сохранить у себя:
Практика. Декораторы, ошибки и исключения

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки