我没有得到它,我试图计算此列表中的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在列表中是两次,我希望它不止一个!那么为什么它没有回归呢?
答案 0 :(得分:5)
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
你可能想传递后者,你的功能不会起作用。
答案 1 :(得分:0)
n
传递给same_rank
时,
n = int(raw_input('Give n '))
是一个字符串,而不是整数。使用
n
传递值时或转换print same_rank(hand, int(n))
:
same_rank
或让def same_rank(hand, n):
n = int(n)
if hand.count('2')>n:
print hand.count('2')
else:
print 'bite me'
处理转化:
{{1}}
答案 2 :(得分:0)
n是字符串类型请转换为int 工作守则:
def same_rank(hand, n):
f=''.join(hand)
if f.count('2')>int(n):
print f.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)