#python #loops #if-statement #while-loop
Вопрос:
У меня есть этот цикл, и мне трудно заставить его принимать онлайн-целое число. Никакой веревочки.
def addItem(menu, order):
# get item no from user
itemNo = int(input('your choice : '))
# validate item no
if itemNo == -1:
return itemNo
while itemNo not in range(1, len(menu) 1):
itemNo = int(input('Invalid input, try again: '))
if itemNo == -1:
return itemNo
Комментарии:
1. Что такое онлайн-целое число ? Не могли бы вы опубликовать полный код ?
2. вы имеете в виду принудительный ввод здесь: ItemNo = int(ввод(«Неверный ввод, повторите попытку:»)) только для целочисленных типов?
3. Вы пробовали вставлять
itemNo = int(input('Invalid input, try again: '))
try .. except
блок, улавливая исключение, которое вы получаете, когда вводится что-либо, кроме допустимого целого числа?4. Это была опечатка … Я хотел сказать Только целое число
Ответ №1:
Вы можете добавить функцию try/catch в функцию, которая это делает
def get_input():
not_valid = True
while not_valid:
itemNo = input("your choice: ")
try:
itemNo = int(itemNo) #Try convert the input to an integer
return itemNo
except TypeError: #That fails - start over
print("Enter only integers!")
и используйте это
def addItem(menu, order):
# get item no from user
itemNo = get_input()
# validate item no
if itemNo == -1:
return itemNo
while itemNo not in range(1, len(menu) 1):
itemNo = int(input('Invalid input, try again: '))
if itemNo == -1:
return itemNo