我如何处理python中的一手牌

时间:2013-11-13 18:59:40

标签: python-3.x

我试图用random.shuffle处理python中的一只手并且它一直给我一个错误,有人可以帮我弄清楚它有什么问题。

# [import statements]
import q1fun
# [constants]

# [rest of program code]
number = input("howmany cards to you want dealt?")
a = q1fun.deal(number)
print (a)

# [import statements]
import random
# [constants]

def deal(x):


    y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
    a = random.shuffle(y(x))


    return(a)

你想要多少张牌?5 Traceback(最近一次调用最后一次):   文件“C:\ Users \ Eddie \ workspace \ cp104 \ durb8250_a16 \ src \ q1.py”,第18行,in     a = q1fun.deal(数字)   文件“C:\ Users \ Eddie \ workspace \ cp104 \ durb8250_a16 \ src \ q1fun.py”,第29行,在交易中     a = random.shuffle(y(x)) TypeError:'list'对象不可调用

2 个答案:

答案 0 :(得分:1)

random.shuffle(y)将列表y移动到位并返回None。 所以

def deal(n):
    "Return a hand of n cards"
    y = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9,
         10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6,
         7, 8, 9, 10, 11, 12, 13]
    random.shuffle(y)
    return y[:n]

可能更接近你想要的。

或省略random.shuffle(y),只使用random.sample

return random.sample(y, n)

答案 1 :(得分:0)

您正尝试使用函数调用括号引用列表元素。你想使用方括号。

function(x)    <-- calls the function with parameter x
list[x]        <-- gets the x-th element of the list

此外,您的输入将返回一个字符串。在使用它来引用索引之前,您需要将其转换为整数。即random.shuffle(y[int(x)])

最后,你的随机通话将无效。你想先洗牌(将列表in place混洗),然后获取元素

random.shuffle(y)
a = y[int(x)]