有嚼劲 发表于 2020-8-16 10:49:45

类似于 if a == ('b' or 'c') 的问题

如题,我想做一个判断,如果raw_word是一下四个单词的话,就+es
下面第一个代码,输入potato,打印出来potatoes;输入tomato,打印出来就是tomatos了。
raw_word = 'tomato'
if raw_word.lower() == ('potato' or 'tomato' or 'hero' or 'negro'):       # 这个不行
   print(raw_word + 'es')
else:
   print(raw_word + 's')下面第二个代码,改了if后面的条件,把几个条件分开表示,用or分隔开,输入tomato,打印出来就是tomatoes了。
raw_word = 'tomato'
if raw_word.lower() == 'potato' or raw_word.lower() == 'tomato':    # 这个可以
   print(raw_word + 'es')
else:
   print(raw_word + 's')
我类比方法.endswith(),尝试使用了元组,但是好像不行,pycharm提示说括号冗余。


想请教大神:为什么第一个代码里面if那一句,判断为False?一定要像第二种方法那样,一个一个条件的分开表示吗?

如能解答,不胜感激!!!



zltzlt 发表于 2020-8-16 10:50:57

Python 会先运算 ('potato' or 'tomato' or 'hero' or 'negro'),根据短路逻辑得出 'potato',而 raw_word.lower() 不等于 'potato',所以判断为 False
页: [1]
查看完整版本: 类似于 if a == ('b' or 'c') 的问题