在Python中使用'not'和'or'

时间:2013-05-08 12:07:27

标签: python python-2.5

在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'时它也会显示,其余时间该计划开始了。我认为这个错误是由于'或'和'不是'一起使用引起的,因为当我将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:

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

smitec是对的,但是

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

可能更容易。

答案 2 :(得分:0)

if (not 'y' in yn) or (not 'Y' in yn):
    print 'Program Now Quitting.'

答案 3 :(得分:0)

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

取决于你想要实现的目标,它可以是:

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

或:

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

答案 4 :(得分: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