1

在 Python 2.5 中,我使用了以下代码:

    yn=raw_input('''This program is for solving linear and quadratic equations.
    Is this what you want to do?
    ''')
    if not 'y' in yn or 'Y' in yn:
        print 'Program now quitting.'

在程序关闭时显示Program now quitting,这应该在 yn 不包含 'y' 或 'Y' 时发生,但它也会在 yn 包含 'Y' 时显示,在程序的其余部分开始之前。我认为这个错误是由'or'和'not'一起使用引起的,因为当我更改为时它没有改变if not 'y' in yn or 'Y' in yn:if not 'y' in yn or not 'Y' in yn:但是当我将它更改为时消失了

    if not 'y' in yn:
        if not 'Y' in yn:

这是正确的吗?如果有的话,我可以做些什么来解决问题并使这部分保持在同一条线上?

4

5 回答 5

5

if not ('y' in yn or 'Y' in yn):应该管用。

于 2013-05-08T12:09:26.240 回答
2

smitec 是对的,但是

if not 'y' in yn.lower():

可能更容易。

于 2013-05-08T12:13:25.720 回答
0
if (not 'y' in yn) or (not 'Y' in yn):
    print 'Program Now Quitting.'
于 2013-05-08T12:10:30.660 回答
0

如有疑问,请使用大括号 :)

根据您想要实现的目标,它可以是:

if (not 'y' in yn) or ('Y' in yn):

或者:

if not ('y' in yn or 'Y' in yn):
于 2013-05-08T12:11:06.000 回答
0

请考虑将其写成更具可读性

if 'y' not in yn and 'Y' not in yn:
  pass  # ...

not in操作员不会遇到您刚刚遇到的问题。

关于您的直接问题:not操作员以高优先级绑定,所以

not x or y

被解释为

(not x) or y

如果你想覆盖它,你必须设置括号:

not (x or y)

或转置术语:

not x and not y
于 2013-05-08T12:38:38.757 回答