2010-08-22 6 views
1

Je veux que mon code python demande la valeur de n, après que l'utilisateur ait entré la valeur. programme prend une entrée pour n valeurs, et le stocke dans une liste ou quelque chose comme tableau (en c). entrée doit être au format: entrer la valeur de n: 4comment entrer n numéros dans la liste un par un?

je veux enregistrer cette entrée dans la liste, pour mon usage ultérieur. espérons que c'est plus clair maintenant. depuis que je suis nouveau à python je suis expliquer mon meilleur.

+1

Qu'avez-vous jusque là? – sth

+1

Peut-être que vous pourriez décrire l'image plus grande aussi pour comprendre le contexte? –

Répondre

1

L'approche la plus simple est quelque chose comme ceci:

n = int(input()) 
l = [int(input()) for _ in range(n)] 

Cependant, cela a un certain nombre de problèmes:

  • Il se bloque sur les entrées invalides.
  • Il évalue les entrées qui sont dangereuses - l'utilisateur pourrait modifier votre état de programme. (Python 2.x)
  • L'utilisateur peut entrer des nombres à virgule flottante et le programme ne se plaindra pas, il sera simplement tronqué en silence. (Python 2.x)

A la place, vous pouvez utiliser raw_input et analyser le résultat sous la forme d'un entier. Vous devrez également gérer les erreurs dans les emplacements appropriés. La façon dont vous gérez les erreurs dépend du programme.

Vous trouverez peut-être cette fonction peut être utile comme point de départ:

def getNumber(prompt = ''): 
    while True: 
     try: 
      return int(raw_input(prompt)) 
     except: 
      print "Invalid input, try again." 

Notez que le comportement de l'entrée et raw_input a changé entre Python 2.x et Python 3.x. La fonction d'entrée de Python 3.x se comporte comme la fonction raw_input de Python 2.x.

+0

aucun de deux travaillé pour moi .. :( – mahidce

+0

@mahidce: Pouvez-vous donner des détails? Quelle erreur? –

1

L'interface que vous proposez est plutôt mal conçue. Pourquoi ne pas simplement laisser l'utilisateur entrer les chiffres? Laissez l'ordinateur faire le comptage, si un compte est vraiment nécessaire:

line = raw_input("Numbers: ") 
numbers = [int(s) for s i line.split()] 

Le code sera plus complexe avec la vérification des erreurs, mais l'approche de base est de rendre les choses plus facile pour l'utilisateur.

Questions connexes