如何格式化多个';或';Python中if语句中的条件

如何格式化多个';或';Python中if语句中的条件,python,Python,我是Python新手,正在尝试对单个变量实现多个“或”条件。我想知道并理解以下格式的最佳方式: if ((word < 1) | (word > 10)): print "\n\n\nThe word entered is not valid!" print "Words that are valid are 1,2,7,8,9 and 10" if((单词10)): 打印“\n\n\n输入的单词无效!” 打印“有效单词为1、2、7、8、9和10” 我想将“1”与数字

我是Python新手,正在尝试对单个变量实现多个“或”条件。我想知道并理解以下格式的最佳方式:

if ((word < 1) | (word > 10)):
   print "\n\n\nThe word entered is not valid!"
   print "Words that are valid are 1,2,7,8,9 and 10"
if((单词<1)|(单词>10)):
打印“\n\n\n输入的单词无效!”
打印“有效单词为1、2、7、8、9和10”
我想将“1”与数字5-10进行比较。会不会是这样的:

 if ((word < 1) | (word > 10) and (word < 1) | (word >9) and (word < 1) and etc...):
   print "The word entered is not valid!"
   print "Words that are valid are between 1,2,7,8,9 and 10"
if((单词<1)|(单词>10)和(单词<1)|(单词>9)和(单词<1)等):
打印“输入的单词无效!”
打印“有效单词在1,2,7,8,9和10之间”
数字1、2、7、8、9和10有效。数字3、4、5和6必须检查为小于“word”变量


我该怎么做呢?

在Python中,
是按位或。你想要:

if word < 1 or word > 10:
等效和/或逻辑为:

if word < 1 or (word > 2 and word < 7) or word > 10:
    print('invalid')
如果单词<1或(单词>2和单词<7)或单词>10:
打印('无效')
但是你可以看到
不以
的方式更简单。

如果word<1或word==10或word>15或word==11:
if word < 1 or word == 10 or word > 15 or word == 11:
    print 'All will be considered'
打印“所有将被考虑”
就像前面提到的,你也可以这样做

if word in (1,2,3,4,5,6,7):
    <do something>
如果单词在(1,2,3,4,5,6,7)中:
或者在射程内

if word in range(0,10):
    <do something>
如果单词在范围(0,10)内:

或者,如果其中任何一个是真的,那么它将是真的。如果所有这些都是真的,那么它们都是真的。

除了@mark tolonen的答案,还有几种方法可以检查一系列数字是否小于某个值。一种方法是显式使用循环:

less_than_word = True
for i in range(5, 10):
    if i > word:
        less_than_word = False 
        break

print('All values < word: {}'.format(less_than_word))

另一种选择是检查数字序列中的最大元素(示例中为5-10)是否小于
word
。如果是,则它们都小于word,如果不是,那就不是了。

首先
|
是按位的,而
是布尔的,还是。这是
1将变量“word”与多个整数进行比较的原因,其中“1”是唯一有效的整数,任何小于1的值或任何从5到10的值都是无效的。那么2,3,4,5,>10?您很可能想做一些类似于
word not in(1,2,7,8,9,10)
的事情,尽管您在Python中的问题真的一点也不清楚,但您更愿意做:
如果不是(1@VincentSavard,我不认为这是错误的:)这确实是一个意见问题。“我认为积极的逻辑更清楚了。”鹰飞,不客气。如果它适当地回答你的问题,请考虑通过左边的支票来接受答案。
less_than_word = True
for i in range(5, 10):
    if i > word:
        less_than_word = False 
        break

print('All values < word: {}'.format(less_than_word))
less_than_word = all(map(lambda x: x < word, range(5, 10)))
print('All values < word: {}'.format(less_than_word))