繁体   English   中英

我的Python程序无法正常终止?

[英]My Python program won't terminate properly?

当我使用命令终止程序时,它不会终止,而是假设我想在打开“否”时打开另一个程序,这是我的代码:

import getpass
print 'Hello', getpass.getuser(), ', welcome!'
do = raw_input ('What program would you like to open? ')
if do.lower() == 'browser' or 'internet' or 'Chrome' or 'Google chrome':
    import webbrowser
    webbrowser.open ('www.google.com')
    oth = raw_input ('Are there any others? ')
    if oth.lower() == 'yes' or 'ye' or 'yeah':
        oth2 = raw_input ('Please name the program you would like to open! ')
else:
    import sys
    sys.exit()

看着:

if do.lower() == 'browser' or 'internet' or 'Chrome' or 'Google chrome':

在这里,您有几个始终为True的语句; “互联网”或“ Chrome”或“ Google chrome”中的每一个都是一个非空字符串。 do.lower()具有什么值都没有关系。 这意味着python将该行视为if something或True的等效项。

您要执行的操作是使用in运算符来测试do是否为以下选项之一:

if do.lower() in ('browser', 'internet', 'chrome', 'google chrome'):

请注意,我将列表中的所有选项小写以进行测试; 毕竟,您也要小写输入,因此它永远不会匹配“ Chrome”; 它会是“ chrome”或其他名称。

if oth.lower() == 'yes' or 'ye' or 'yeah':行也是如此。

if oth.lower() == 'yes' or 'ye' or 'yeah':

您的问题在上述行中。

在python中,字符串的真值取决于它是否为空。 例如bool('')False bool('ye')True

您可能想要类似的东西:

if oth.lower() in ('yes','ye','yeah'):

因此,您在浏览器检查中遇到相同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM