Необходимо использовать while l oop для ввода только целого числа - PullRequest
0 голосов
/ 11 июля 2020

Я пишу простую программу для выполнения следующей операции:

  1. Определите количество элементов, которые будут добавлены в список (.ie N = 6)
  2. Добавить каждый элемент списка с использованием метода ввода [1,2,3,4,5,6]

Но когда я делаю второй шаг, у меня возникает следующее требование.

Я должен был всегда вводить целые числа. Если я добавляю строку или другой тип ввода, код должен запрашивать добавление Integer, пока не будут добавлены все элементы. Конец закодированного, я предполагаю добавить N целых чисел.

Я пытался сделать это с помощью try /, за исключением кода ниже

def request_for_numbers():
    list2 = []
    number = int(input("Please input numbers need to be added to the list "))
    while True:
        if len(list2)<=number:
            element = input("Please input the element of the List : ")
            while True:
                try:
                    element=int(element)
                except:
                    print("Add Integer Value")
                    element=input()
            list2.append(element)
        
    print(len(list2))

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

Ответы [ 3 ]

1 голос
/ 11 июля 2020

Зачем вам в коде второй while True? Он создает бесконечный l oop попытки проанализировать элемент как Integer.

def request_for_numbers():
list2 = []
number = int(input("Please input numbers need to be added to the list "))
while True:
    if len(list2)<number:
        element = input("Please input the element of the List : ")
        #while True:
        try:
            element=int(element)
            list2.append(element)
        except ValueError:
            print("Add Integer Value")
            element=input()
    else:
        break
print(len(list2))

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

1 голос
/ 11 июля 2020
def request_for_numbers():
    list2 = []
    while True:
        number = input("Please input numbers need to be added to the list ")
        try:
            number = int(number)
            break;
        except ValueError:
            pass
    
    
    while number!=0:
        element = input("Please input the element of the List : ")
        try:
            element=int(element)
            list2.append(element)
            number-=1
        except ValueError:
            print("Please enter an Integer Value")
    
    print(len(list2))
request_for_numbers()

ваш пока l oop не выходит

1 голос
/ 11 июля 2020

Вы можете переписать его как показано ниже

 def request_for_numbers():
    list2 = []
    number = int(input("Please input numbers need to be added to the list "))
    while True:
        if len(list2) > number:
            break
        element = input("Please input the element of the List : ")
        if (element.isdigit()):
            list2.append(element)
        else:
             print("Add Integer Value")
    
         
    
    print(len(list2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...