我是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'的变量。
我该怎么做?
答案 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
,如果不是,则不然。