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

时间:2016-01-06 17:44:03

标签: 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"

我想将'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"

数字1,2,7,8,9和10有效。必须检查数字3,4,5和6是否小于'word'的变量。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

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

if word < 1 or word > 10:

根据问题更新,以下是检查特定值集的一种方法:

if word not in (1,2,7,8,9,10):
    print('invalid')

等效和/或逻辑将是:

if word < 1 or (word > 2 and word < 7) or word > 10:
    print('invalid')

但是你可以看到not in方式更简单。

答案 1 :(得分:0)

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>

或在范围内。

if word in range(0,10):
    <do something>

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

答案 2 :(得分:0)

除了@ 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))

或者,您可以使用all()map()的组合来解决它(如果您是python的新手,则可以更难阅读,您可以找到all()的文档和map() here):

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

另一种替代方法是检查数字序列中的最大元素(在您的示例中为5-10)是否小于word。如果是这样,那么它们都小于word,如果不是,则不然。