2010-08-12 6 views
2

Bonjour, Je suis un essayer d'apprendre python, En C++ pour lire dans la chaîne de stdin je fais simplementComment lire simplement en entrée à partir de délimité par l'espace ou espaces

string str; 
while (cin>>str) 
    do_something(str) 

mais en python, je avoir à utiliser

line = raw_input() 

puis

x = line.split() 

puis-je parcourir la liste x pour accéder à chaque str à do_something(str)

cela semble beaucoup de code juste pour obtenir chaque chaîne délimitée par l'espace ou les espaces donc ma question est, est-il un moyen plus facile?

+0

Le code C++ semble cryptique et rempli d'hypothèses implicites. Quelle est votre ** vraie ** question? –

Répondre

6

Python ne pas cas particulier une forme spécifique d'entrée pour vous, mais il est trivial de faire un peu générateur pour elle bien sûr:

def fromcin(prompt=None): 
    while True: 
    try: line = raw_input(prompt) 
    except EOFError: break 
    for w in line.split(): yield w 

puis, dans votre code d'application, vous boucle avec une déclaration for (généralement le meilleur moyen de boucle au niveau du code d'application):

for w in fromcin(): 
    dosomething(w) 
0

Il n'y a pas vraiment un moyen "plus facile", puisque Python n'a pas de fonctions de chaînes formatées intégrées comme le fait C++ avec iostream.

Cela dit, vous pouvez réduire votre code en combinant les opérations:

for str in raw_input().split(): 
    do_something(str) 
+0

votre code propagerait une exception 'EOFError' quand l'entrée standard est faite (vous avez vraiment besoin d'un' try'/'except' pour gérer cela - par exemple, voir ma réponse). Appeler 'split' directement sur la valeur de retour de' raw_input() ', plutôt que d'affecter ce dernier à une variable intermédiaire, est en effet faisable, mais je pense que les séparer les rend plus lisibles (puisque vous devriez écrire un générateur pour de toute façon, sauver une ligne n'est pas une grosse affaire à mon humble avis). –

0
map(do_something, line.split()) 
+2

Explication manquante, veuillez ajouter quelques mots à votre code. –

Questions connexes