2016-12-16 1 views
0

Je suis nouveau à Python.Trying pour l'apprendre. Voici mon code:Python Code-While boucle jamais fin

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 

Le code est en cours d'exécution, mais la boucle se répète toujours et ne me permet d'entrer 2ème entier.

Sortie:

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

Puis-je savoir ce qui ne va pas avec mon code? Merci

+4

'si isint == TRUE' - quand serait-il jamais être vrai? – user2357112

+2

Pourquoi avez-vous besoin de la vérification booléenne? Il suffit de mettre tout le code que vous avez besoin quand un int dans le 'try' –

Répondre

1

isint doit être mis à jour après avoir affirmé que l'entrée était int

MISE À JOUR: Il y a un autre problème sur le premier essai, sauf. Si l'entrée n'était pas un nombre entier, le programme devrait être capable de sortir ou de vous ramener au début. Ce qui suit va continuer à en boucle jusqu'à ce que vous entrez un entier premier

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

Combien d'entiers 3 S'il vous plaît entrer Entier1: 1 S'il vous plaît entrer entier2: 2 S'il vous plaît entrer integer3: 3 –

+0

Combien d'entiers 3 S'il vous plaît entrer Entier1 : 1 Veuillez entrer integer2: 2 Veuillez entrer integer3: 3 Maintenant, il fonctionne parfaitement Merci Man. Je remercie tout le monde de m'avoir aidé. –

+0

Vous êtes invités à upvote/accepter ma réponse;) – kthouz

3

Le problème de votre code est que isint est jamais changé et est toujours False, ainsi count est jamais changé. Je suppose que votre intention est que lorsque l'entrée est un entier valide, augmentez le count, sinon, ne faites rien à count.

Voici le code, isint drapeau est pas besoin:

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

Un meilleur code:

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)