2015-08-20 1 views
-1

J'apprends le python. Je veux que mon programme prenne des entrées (nom et âge) et les ajoute à la liste en tant que tuple, trie l'entrée par âge et imprime. Je ne connais pas la taille de l'entrée.Comment donner quelques lignes d'entrée de l'interpréteur python, au lieu d'un fichier?

Mon code:

list = [] 
while(True): 
    try: 
     name,age = input().split() 
     list.append((age,name)) 
    except StopIteration: 
     break 
list.sort() 
print(list) 

entrée:

DUCHESS 26 
MARIE 8 
BERLIOZ 8 
TOULOUSE 7 
THOMAS 28 

J'ai deux questions:

1) Comment faire pour exécuter ce fichier .py dans mon interprète? Il donne ce message d'erreur quand je tape toute l'entrée et appuie sur Entrée ValueError: need more than 0 values to unpack

2) Même quand j'exécute ce programme sur ideone, il donne un message d'erreur d'exécution. Qu'est-ce que je fais mal?

Et aussi, quelle est la meilleure approche pour ce problème? En utilisant un dictionary?

Répondre

0

Si quelqu'un entre une chaîne vide, ''.split() renvoie [], donc vous ne pouvez pas a,b = []. Et il jette ValueError au lieu de StopIteration.

Voici une version fixe:

list = [] 
while True: 
    try: 
     name,age = input().split() 
     list.append((age,name)) 
    except Exception: 
     break 
list.sort() 
print(list) 

Sortie:

[email protected]:~/Desktop$ python3 a.py 
DUCHESS 26 
MARIE 8 
BERLIOZ 8 
TOULOUSE 7 
THOMAS 28 

[('26', 'DUCHESS'), ('28', 'THOMAS'), ('7', 'TOULOUSE'), ('8', 'BERLIOZ'), ('8', 'MARIE')] 
+0

Merci, mais je me sers Python 3, et oui, l'entrée donnée est correcte. Je veux savoir comment donner une contribution de l'interprète, au lieu d'un fichier. – Charan

+0

Ensuite, pouvez-vous supprimer la balise Python-2.7 de votre message, s'il vous plaît? – Sait

+0

Désolé, enlevé! – Charan