2010-01-08 70 views
1

我希望當我回應其他事情不同,是的,子進程不運行。Popen總是運行,忽略如果

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 

回答

1

改變這種

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

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

或更改你的迴應小寫

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

更清潔的方式可能Alquimista也可以像 r.lower()在[」 Y「,」Y「,」是「,」是「,」是「]: :-) – shahjapan 2010-01-08 07:31:53

+0

@shahjapan:如果您使用lower(),那麼爲什麼在列表中包含'」Y「? – nosklo 2010-01-08 10:20:58

1

我不知道如果我完全理解你的問題,但我相信這個問題是你的語法s線:

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

你正在測試「Y」,「Y」等真相,所有評估爲「真」。把所有的值的序列,並且做到:

if r in seq: 

這應該是做的比

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

小修正:'=='綁定比'或'更緊密,因此OP正在測試'(r ==「Y」)或「y」或「yes」等的真實性。 – balpha 2010-01-08 06:44:33