0

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

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

2 回答 2

4

看着:

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

在这里,您有几个始终评估为 True 的语句;'internet' 或 'Chrome' 或 'Google chrome' 中的每一个都是一个非空字符串。有什么价值观并不重要do.lower()。这意味着 python 将该行视为等效于 if something 或 True。

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

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

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

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

于 2012-07-12T14:57:08.073 回答
0
if oth.lower() == 'yes' or 'ye' or 'yeah':

你的问题在上面一行。

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

你可能想要这样的东西:

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

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

于 2012-07-12T14:55:23.217 回答