我试图用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'对象不可调用
答案 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)]