Python: 有没有办法在 != 之前执行 or 语句
Python: Is there a way to execute an or statement before !=
我正在尝试 运行 以下代码:
while check == False:
op = input('Do you want to add, subtract, multiply or divide?')
if op != ((('add' or 'subtract') or 'multiply') or 'divide'):
print('Please enter a valid operation')
else:
check = True
但是,只有 'add' 被视为有效输入。有没有一种方法可以在不使用嵌套 if 语句的情况下执行此代码,以便所有 4 个选项都有效?
您必须单独进行每个比较,因此 op != 'add' and op != 'subtract'...
。
您可以使用 not in
运算符:
if op not in ['add', 'substract', 'multiply', 'divide']:
print('Please enter a valid operation')
in
检查 容器中的项目 ,not in
恰恰相反。
或者另外,正如@Chris_Rands建议的那样,为了效率用一个集合替换列表:
if op not in {'add', 'substract', 'multiply', 'divide'}:
print('Please enter a valid operation')
or
运算符 是 在 !=
之前执行的。你做错的是你使用了错误的操作数:
'add' or 'substract'
>>> 'add'
这意味着最后会是:
if 'op' != 'add':
这正是您所得到的。您需要做的是将 op 与您允许的每个操作进行比较:
if (op != 'add') and (op != 'substract'):
或 python-fu
validOperations = ['add, 'substract']
if op not in validOperations:
您可以使用 in
和列表。
while check == False:
op = input('Do you want to add, subtract, multiply or divide?')
if op not in ['add', 'subtract', 'multiply', 'divide']:
print('Please enter a valid operation')
else:
check = True
如果您希望得到与您的代码类似的答案,那么这个方法很有效:
check = False
while check == False:
op = raw_input('add/subtract/multiply/divide ? : ')
if op != 'add' and op != 'subtract' and op != 'multiply' and op != 'divide':
print 'What? Choose wisely.'
else:
print 'Well chosen.'
check = True
我正在尝试 运行 以下代码:
while check == False:
op = input('Do you want to add, subtract, multiply or divide?')
if op != ((('add' or 'subtract') or 'multiply') or 'divide'):
print('Please enter a valid operation')
else:
check = True
但是,只有 'add' 被视为有效输入。有没有一种方法可以在不使用嵌套 if 语句的情况下执行此代码,以便所有 4 个选项都有效?
您必须单独进行每个比较,因此 op != 'add' and op != 'subtract'...
。
您可以使用 not in
运算符:
if op not in ['add', 'substract', 'multiply', 'divide']:
print('Please enter a valid operation')
in
检查 容器中的项目 ,not in
恰恰相反。
或者另外,正如@Chris_Rands建议的那样,为了效率用一个集合替换列表:
if op not in {'add', 'substract', 'multiply', 'divide'}:
print('Please enter a valid operation')
or
运算符 是 在 !=
之前执行的。你做错的是你使用了错误的操作数:
'add' or 'substract'
>>> 'add'
这意味着最后会是:
if 'op' != 'add':
这正是您所得到的。您需要做的是将 op 与您允许的每个操作进行比较:
if (op != 'add') and (op != 'substract'):
或 python-fu
validOperations = ['add, 'substract']
if op not in validOperations:
您可以使用 in
和列表。
while check == False:
op = input('Do you want to add, subtract, multiply or divide?')
if op not in ['add', 'subtract', 'multiply', 'divide']:
print('Please enter a valid operation')
else:
check = True
如果您希望得到与您的代码类似的答案,那么这个方法很有效:
check = False
while check == False:
op = raw_input('add/subtract/multiply/divide ? : ')
if op != 'add' and op != 'subtract' and op != 'multiply' and op != 'divide':
print 'What? Choose wisely.'
else:
print 'Well chosen.'
check = True