Я создал программу на Python 3.4.1, которая; запрашивает целое число, проверяет, что это целое число, выдает сообщение об ошибке и запрашивает номер для повторного ввода, если не целое число, после проверки числа добавляет его в список, заканчивается, если введено значение -1.Ошибка Python Traceback во время цикла после обработки ошибок
mylist = []
def checkint(number):
try:
number = int(number)
except:
print ("Input not accepted, please only enter whole numbers.")
number = input("Enter a whole number. Input -1 to end: ")
checkint(number)
number = input("Enter a whole number. Input -1 to end: ")
checkint(number)
while int(number) != -1:
mylist.append(number)
number = input("Enter a whole number. Input -1 to end: ")
checkint(number)
Это все работает нормально, за исключением одного сценария. Если вводится не целое число, например. р (который выдает сообщение об ошибке), а затем на -1, чтобы закончить программу, я получаю сообщение:
Traceback (most recent call last):
File "C:/Users/************/Documents/python/ws3q4.py", line 15, in <module>
while int(number) != -1:
ValueError: invalid literal for int() with base 10: 'p'
Я не понимаю, почему это происходит, так как ввод р никогда не должен получить как
while int(number) != -1:
Это обзор. У вас есть переменная 'number', которая является глобальной, а переменная' number' является локальной для 'checkint' - это вызывает путаницу. После проверки вам нужно передать переменную из функции, чтобы она работала. –