正如@agf提到,使用any
多個or
和多個and
使用all
將是應對自然的方式可以使用另一種方法使用組
例如
給出
user1=['1','13','25']
and
user2=['0','1','13','14','26','27','39']
if ('0' or '13' or '26' or '39') in user1
其通常寫爲
any(x in user1 for x in ['0' , '13' , '26' , '39'])
也可以寫爲
not set(['0' , '13' , '26' , '39']).isdisjoint(user1)
or
len(set(['0' , '13' , '26' , '39']).intersection(user1))>0
並且類似地
if ('0' and '13' and '26' and '39') in user2
其通常寫爲
all(x in user2 for x in ['0' , '13' , '26' , '39'])
也可以寫爲
len(set(['0' , '13' , '26' , '39']).difference(user2)) == 0
所以回到你的問題,用交集,我們可以寫成
if not set(['0' , '13' , '26' , '39']).isdisjoint(user1) and accumulator + 11 <= 21:
accumulator += 11
print 'ADDING 11!!!!!'
elif ('0' or '13' or '26' or '39') in user:
accumulator += 1
print 'ADDING 1'
因爲他的if語句是錯誤的,所以甚至從未達到該行。他知道這是因爲他包含了'print'語句。 – agf 2012-03-26 16:16:20