Ошибка интерпретатора:NameError: name 'inrut' is not defined
Что означает: интерпретатор не нашел определение 'inrut', иными словами, в исходном коде не существует (не определена) такой переменной/функции/класса. Здесь подразумевалась функция для пользовательского ввода input().
Исправление:
a = int(input())
Программа 2
Ошибка интерпретатора:TypeError: not all arguments converted during string formatting
Что означает: интерпретатор воспринял конструкцию (a % b) как оператор форматирования строк (например, "Hello, %s" % name превратится в строку "Hello, Ivan", то есть %s заменится значением переменной name, стоящей после знака процента). При форматировании строк возникает подобная ошибка, если не все аргументы, указанные в сроке форматирования, были переданы. Если взять пример, который выше, и в строку форматирования добавить еще один %s: "Hello, %s %s" % name, то тогда возникнет эта ошибка, потому что в строку форматирования надо подставить два значения, а передали мы только одно name.
Ошибка возникла из-за того, что программист подразумевал деление двух целых чисел с остатком, но перед выполнением задуманного не конвертировал введенные данные из строк в числа, и оператор % между двумя строками воспринялся интерпретатором как оператор форматирования.
Исправление:
a = int(input())
b = int(input())
k = (a % b) // a * b
Программа 3:
Ошибка интерпретатора:ZeroDivisionError: division by zero
Что означает: интерпретатор говорит о том, что в программе произошло деление на ноль. Если сказать коротко, то так делать нельзя. Поэтому есть два решения проблемы: ловить это исключение или предварительно проверять область допустимых значений, то есть проверить, будет ли знаменатель равен нулю.
Answers & Comments
Программа 1
Ошибка интерпретатора: NameError: name 'inrut' is not defined
Что означает: интерпретатор не нашел определение 'inrut', иными словами, в исходном коде не существует (не определена) такой переменной/функции/класса. Здесь подразумевалась функция для пользовательского ввода input().
Исправление:
a = int(input())
Программа 2
Ошибка интерпретатора: TypeError: not all arguments converted during string formatting
Что означает: интерпретатор воспринял конструкцию (a % b) как оператор форматирования строк (например, "Hello, %s" % name превратится в строку "Hello, Ivan", то есть %s заменится значением переменной name, стоящей после знака процента). При форматировании строк возникает подобная ошибка, если не все аргументы, указанные в сроке форматирования, были переданы. Если взять пример, который выше, и в строку форматирования добавить еще один %s: "Hello, %s %s" % name, то тогда возникнет эта ошибка, потому что в строку форматирования надо подставить два значения, а передали мы только одно name.
Ошибка возникла из-за того, что программист подразумевал деление двух целых чисел с остатком, но перед выполнением задуманного не конвертировал введенные данные из строк в числа, и оператор % между двумя строками воспринялся интерпретатором как оператор форматирования.
Исправление:
a = int(input())
b = int(input())
k = (a % b) // a * b
Программа 3:
Ошибка интерпретатора: ZeroDivisionError: division by zero
Что означает: интерпретатор говорит о том, что в программе произошло деление на ноль. Если сказать коротко, то так делать нельзя. Поэтому есть два решения проблемы: ловить это исключение или предварительно проверять область допустимых значений, то есть проверить, будет ли знаменатель равен нулю.
Исправление:
Первый вариант:
try:
f = 5
c = 0
r = f / c
print(r)
except ZeroDivisionError:
print("На ноль делить нельзя")
Второй вариант:
f = 5
c = 0
if c == 0:
print("На ноль делить нельзя")
r = f / c
print(r)