2010-01-08 7 views
1

Je veux que lorsque je réponds autre chose diferent que oui, le sous-processus ne fonctionne pas.Popen toujours courir, en ignorant le si

r = raw_input('\nDo you want play the video?\n\nY:Yes N:No\n\n') 
if r == "Y" or "y" or "yes" or"yep" or"yeah": 
    message("Playing Video") 
    subprocess.Popen(playvid) 
else: 
    pass 

Répondre

1

changer cette

if r == "Y" or "y" or "yes" or"yep" or"yeah": 

à

if r in ["Y","y","yes","yep","yeah"] : 

ou modifier votre réponse en minuscules

r = raw_input('\nDo you want play the video?\n\nY:Yes N:No\n\n').lower() 
if r in ["y","yes","yep","yeah"] : 
+0

probablement Alquimista peut aussi faire comme r.lower() dans [ » Y "," y "," oui "," yep "," ouais "]: :-) – shahjapan

+0

@shahjapan: si vous utilisez lower() alors pourquoi inclure" Y "sur la liste? – nosklo

1

Je ne sais pas si je comprends bien votre question, mais je crois que la question est votre syntaxe dans thi ligne s:

if r == "Y" or "y" or "yes" or"yep" or"yeah": 

Vous testez la vérité de "Y", "y", etc., qui sont tous à évaluer "true". Mettez toutes les valeurs dans une séquence et faire:

if r in seq: 

Cela devrait être un beaucoup plus propre façon de le faire que

if r == "Y" or r == "y"... 
+0

Petite correction: '==' est plus serré que 'ou', donc l'OP vérifie la vérité de' (r == "Y") ou "y" ou "oui" 'etc. – balpha