В Python 2.5, я использовал код:с использованием «не» и «или» вместе в Python
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
, когда программа закрыта, что должно было произойти, когда уп не содержит «у 'или' 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:
Является ли это право ? Что бы я мог сделать, чтобы решить проблему и сохранить эту часть в одной строке?
Возможно, если вы добавите скобки, вы можете получить ее правильно. То, как это написано, неоднозначно. Интерпретатору, возможно, придется выбирать между: (A || B) или (! A) || B. – Renan
'if not yn.lower() == 'y'' может быть проще. – Matthias
Если вы сомневаетесь, посмотрите [«Приоритет оператора»] (http://docs.python.org/2/reference/expressions.html#operator-precedence) и добавьте скобки в порядке очередности: 'in' then' not' то 'или' приводит к 'if ((не ('y' в yn)) или ('Y' в yn)):'. Вы также можете написать 'if 'y' не в yn и 'Y' не в yn' –