Цикл Python Code-While никогда не заканчивается

Я новичок в Python. Пытаюсь изучить это. Это мой код:

import sys
my_int=raw_input("How many integers?")
try:
    my_int=int(my_int)
except ValueError:
    ("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1

Код выполняется, но цикл всегда повторяется и не позволяет мне ввести второе целое число.

Выход:

How many integers?3
Please enter integer1:1
Please enter integer1:2
Please enter integer1:3
Please enter integer1:

Могу ли я узнать, что не так с моим кодом? Спасибо

3 ответа

Проблема вашего кода в том, что isint никогда не меняется и всегда Falseтаким образом count никогда не меняется Я предполагаю, что вы хотите, чтобы при вводе действительного целого числа countиначе ничего не делать count,

Вот код, isint флаг не нужен

import sys

while True:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        break
    except ValueError:
        print("You must enter an integer")
ints=list()
count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    try:
        new_int=int(new_int)
        ints.append(new_int)
        count += 1
    except:
        print("You must enter an integer")

isint должен быть обновлен после утверждения, что ввод был int

ОБНОВЛЕНИЕ: есть еще одна проблема с первой попытки - кроме. Если ввод не был целочисленным, программа должна иметь возможность выйти или вернуть вас к началу. Следующее будет продолжаться до тех пор, пока вы сначала не введете целое число

ints=list()

proceed = False
while not proceed:
    my_int=raw_input("How many integers?")
    try:
        my_int=int(my_int)
        proceed=True
    except:
        print ("You must enter an integer")

count=0
while count<my_int:
    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False
    try:
        new_int=int(new_int)
        isint=True
    except:
        print("You must enter an integer")
    if isint==True:
        ints.append(new_int)
        count+=1

Лучший код:

import sys
my_int=raw_input("How many integers?")
try:
    my_int=int(my_int)
except ValueError:
    ("You must enter an integer")
ints = []


for count in range(0, my_int):

    new_int=raw_input("Please enter integer{0}:".format(count+1))
    isint=False

    try:

        new_int=int(new_int)
        isint = True

    except:

        print("You must enter an integer")

    if isint==True:
        ints.append(new_int)
Другие вопросы по тегам