2016-12-16 6 views
0

Я новичок в Python. Попробуйте его изучить. Это мой код:Python Code-While loop никогда не заканчивается

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 

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

Выход:

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

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

+4

'если IsInt == true' - когда бы он когда-нибудь быть правдой? – user2357112

+2

Зачем вам нужен булевский чек? Просто поместите весь код, который вам нужно, когда ИНТ в 'try' –

ответ

1

IsInt должен быть обновлен после того, как утверждать, что вход был ИНТ

UPDATE: Существует еще одна проблема, с первой попытки, за исключением. Если вход не был целым, программа должна иметь возможность выйти или вернуть вас к началу. Далее будет продолжать цикл, пока вы не введете целое первое

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 
+0

Сколько целых 3 Пожалуйста, введите integer1: 1 Пожалуйста, введите integer2: 2 Пожалуйста, введите число3: 3 –

+0

Сколько целых 3 Пожалуйста, введите integer1 : 1 Пожалуйста, введите integer2: 2 Введите integer3: 3 Теперь он отлично работает Спасибо, человек. Спасибо всем за то, что помогли мне. –

+0

Вы можете поддержать или принять мой ответ;) – kthouz

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") 
0

А лучший код:

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) 
Смежные вопросы