Цикл Python While, который принимает только целое число

#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