def panduan(x,y): if y in x: print('yes!') elif y.title() in x: print('yes!') elif y.lower() in x: print('yes!') elif y.upper() in x: print('yes!') else: print('no!') names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena','Alice'] name_set=set(names) name='bob' panduan(name_set,name)
为什么上面这段程序ok,但下面这种就判断不了呢?只返回yes!,无论name在不在name_set中。
if y or y.title() or y.lower() or y.upper() in x:
谢谢!
没用 if A or B 这种写法
in的优先级较高,if后面先判断
y.upper() in x
然后再进行or,所以当y非空时,if后面的条件都是True,永远执行yes