2010-05-19 6 views
1

Lors de la première installation de Python, le paramètre par défaut exécute l'entrée de code des utilisateurs ligne par ligne. Mais parfois j'ai besoin d'écrire des programmes qui exécutent plusieurs lignes à la fois. Y a-t-il un paramètre dans Python où je peux changer l'exécution du code à un bloc à la fois? MerciExécution de plusieurs lignes en Python

>>> if (n/2) * 2 == n:; 
     print 'Even'; 
     else: print 'Odd' 

SyntaxError: syntaxe non valide

Quand j'ai essayé d'exécuter le code ci-dessus, je me suis une erreur de syntaxe non valide sur ELSE

+0

Que voulez-vous dire? – kennytm

+0

clarification faite – user133466

+0

Il semble que vous essayez d'écrire une application avec accès simultané. Il y a plusieurs façons de le faire mais la solution dépend vraiment du domaine du problème. Pouvez-vous fournir un contexte? – Johnsyweb

Répondre

9

Votre indentation est erronée. Essayez ceci:

>>> if (n/2) * 2 == n: 
...  print 'Even' 
... else: print 'Odd' 

vous pouvez écrire sur quatre lignes aussi:

>>> if (n/2) * 2 == n: 
...  print 'Even' 
... else: 
...  print 'Odd' 

Ou même une seule ligne:

>>> print 'Even' if (n/2) * 2 == n else 'Odd' 
1

Un pas vers la solution consiste à supprimer le point-virgule après la if :

if True:; print 'true'; print 'not ok'; # syntax error! 

if True: print 'true'; print 'ok'; # ok 

Vous ne pouvez pas avoir un else dans la même ligne, car il serait ambigu:

if True: print 't'; if True: print 'tt; else: ... # <- which if is that else for?? 

Il est également clairement indiqué dans le docs que vous avez besoin d'une DEDENT avant l'instruction else peut commencer.

+0

a apporté quelques clarifications merci – user133466

+0

Il n'est pas vraiment correct d'utiliser des points-virgules après toute expression; – hyperboreean

+0

@hyperboreean: en citant les docs: "Une suite peut être une ou plusieurs instructions simples ** séparées par des points-virgules ** sur la même ligne que l'en-tête, suivant le signe deux-points de l'en-tête ou une ou plusieurs instructions en retrait sur les lignes suivantes " –

0

Depuis Python 2.5 vous pouvez faire one line ifs

print ('Even' if n % 2 == 0 else 'Odd') 

Encore à atteindre wer votre question vous pouvez soit:
1. entrer le code correctement sans erreurs de syntaxe et vos blocs seront exécutés en tant que blocs indépendamment du fait qu'ils couvrent plusieurs lignes ou non, même dans le shell interactif. Voir tutoriels en dive into python
2. Code d'écriture dans le script et d'exécuter ce script en utilisant soit la ligne de commande ou d'un IDE (idle, eclipse, etc ..)

Une de l'idée derrière python est à préférer plusieurs lignes et à viser un formatage uniforme de la source, donc ce que vous essayez de faire n'est pas pythonique, vous ne devriez pas viser à entasser plusieurs déclarations en une seule ligne, sauf si vous avez une bonne raison.

0
print n % 2 == 0 and 'Even' or 'Odd' 

:-)

Questions connexes