2016-08-10 1 views
1

Je suis noob et je travaille sur ce projet python et je ne peux pas obtenir la première entrée entrée par l'utilisateur dans un tableau mon code. Merci d'avance Voici mon code:liste ne pas entrer la première entrée

def ask(): 
    user_input = raw_input("Enter a number: ") 
    user_input_array = [] 
    count = 0 
    quits = 'done' 

    while user_input != quits: 
     user_input = raw_input("Enter a number: ") 
     try: 
      if type(user_input) == str: 
       num = int(user_input) 
       user_input_array.append(num) 
       count = count + 1 

     except: 
      print("Invalid input") 

    while user_input == quits: 
     #user_input_array.remove('done') 
     print ("done") 
     print ('Count: ', count) 
     print (user_input_array) 
     break 
ask() 

Répondre

1

C'est parce que vous ne l'a jamais mis là-dedans.

def ask(): 
    user_input = raw_input("Enter a number: ") 
    user_input_array = [user_input] # Create the list with the original input 
    ... 

Avec ce qui précède, la première chose entrée par l'utilisateur est placée dans la liste lors de la création de la liste. Vous pouvez faire vos chèques avant cette

0
def ask(): 
     user_input = raw_input("Enter a number: ") 
     user_input_array = [] 
     count = 0 
     quits = 'done' 

     while user_input != quits: 
      user_input = raw_input("Enter a number: ") 
      try: 
       if type(user_input) == str: 
        num = int(user_input) 
        user_input_array.append(num) 
        count = count + 1 

      except: 
        if user_input == quits: 
          #user_input_array.remove('done') 
          print ("done") 
          print ('Count: ', count) 
          print (user_input_array) 
        else: 
          print("Invalid input") 


    ask() 
0

Vous n'ajoutez pas votre entrée initiale au tableau. Au lieu de cela, vous entrez dans la boucle et demandez une autre entrée et vérifiez puis ajoutez-la au tableau. Vous devriez demander toutes les entrées dans la boucle, car cela signifie que vous n'avez besoin que d'un raw_input et d'une vérification de la valeur effectuée.

Une manière courante de faire ceci est d'entrer dans une boucle infinie et de ne sortir que lorsque vous lisez la valeur done. Comme si

def ask(): 

    user_input_array = [] 

    while True: 

     user_input = raw_input("Enter a number: ") 

     if user_input == 'done': 
      break 

     try: 
      user_input_array.append(int(user_input))  
     except ValueError: 
      print("Invalid input") 

    print ("done") 
    print ('Count: ', len(user_input_array)) 
    print (user_input_array) 

ask() 

Notez que ce l'effet souhaité sans répétition. Vous n'avez également pas besoin de tenir compte du nombre d'éléments que vous avez ajoutés, car la liste a une fonction len qui vous le dira.