代码之家  ›  专栏  ›  技术社区  ›  Alquimista

Popen总是运行,忽略if

  •  1
  • Alquimista  · 技术社区  · 15 年前

    我希望当我响应其他不同于“是”的事情时,子流程不会运行。

    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
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   ghostdog74    15 年前

    改变这个

    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"] :
    
        2
  •  1
  •   avpx    15 年前

    我不确定我是否完全理解你的问题,但我相信问题是你在这行的语法:

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

    你在测试“y”、“y”等的真实性,这些都被评价为“真”。将所有值按顺序放置,然后执行以下操作:

    if r in seq:
    

    这样做应该比

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