-1

我试图用 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 行,a = q1fun.deal(number)文件“C:\Users\Eddie\workspace\cp104\durb8250_a16\src\q1fun.py”,第 29 行,在交易中 a = random.shuffle(y(x)) TypeError: 'list' object is not callable

4

2 回答 2

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)
于 2013-11-13T19:06:08.377 回答
0

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

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

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

最后,您的 shuffle 呼叫将不起作用。您想先洗牌(将列表洗牌,然后获取元素

random.shuffle(y)
a = y[int(x)]
于 2013-11-13T19:09:01.970 回答