我不明白,我试图算出此列表中的2,如下所示:
hand=['D2', 'H5', 'S2', 'SK', 'CJ', 'H7', 'CQ', 'H9', 'D10', 'CK']
f=''.join(hand)
count2=f.count('2')
print count2
它工作得很好,并且将2列在列表中的次数显示给我2。但是,当我将其放入一个不起作用的情况下:
def same_rank(hand, n):
if hand.count('2')>n:
print hand.count('2')
else:
print 'bite me'
hand=['D2', 'H5', 'S2', 'SK', 'CJ', 'H7', 'CQ', 'H9', 'D10', 'CK']
f=''.join(hand)
n=raw_input('Give n ')
print same_rank(hand,n)
如果用户给出n = 1,则应该打印2,因为数字2在列表中是两倍,而我希望它不止于此!那么为什么它不返回那个呢?
raw_input()
返回一个字符串;字符串总是按数字排序,所以2 > '1'
总是False:
>>> 2 > '1'
False
首先将您的输入转换为整数:
n = int(raw_input('Give n '))
如果您使用过Python 3,那么您将获得一个例外:
>>> 2 > '1'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() > str()
因为Python 3取消了为任意类型赋予相对顺序的规定。
接下来,您不传递f
,而是传递hand
,列表:
>>> hand.count('2')
0
>>> f
'D2H5S2SKCJH7CQH9D10CK'
>>> f.count('2')
2
您可能想传递后者,否则您的功能将无法正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句