我的Python程序不会正常终止?

时间:2012-07-12 14:53:26

标签: python windows

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

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()

2 个答案:

答案 0 :(得分:4)

看看:

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

这里有几个总是评估为True的语句; “互联网”或“Chrome”或“Google Chrome”中的每一个都是非空字符串。 do.lower()的值是什么并不重要。这意味着python认为该行等同于if或True。

您要做的是使用in运算符来测试do是否是以下几个选项之一:

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

请注意,我在列表中小写所有选项进行测试;毕竟,你也小写了你的输入,所以它永远不会匹配“Chrome”;它将是“铬”或其他东西。

这同样适用于您的if oth.lower() == 'yes' or 'ye' or 'yeah':行。

答案 1 :(得分:0)

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

你的问题在上面一行。

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

您可能需要以下内容:

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

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