'if'中的count方法不起作用 - python

时间:2014-05-16 13:42:14

标签: python

我没有得到它,我试图计算此列表中的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在列表中是两次,我希望它不止一个!那么为什么它没有回归呢?

3 个答案:

答案 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)