我觉得自己只是一个白痴甚至问这个,但有没有人知道为什么我的代码在每次洗牌后打印列表?
def shuffle(L, nswaps):
n = 0
for item in L:
while n < nswaps:
card_one = choose(L)
card_two = choose(L)
if card_two == card_one:
card_two = choose(L)
n += 1
L[card_one], L[card_two] = L[card_two], L[card_one]
print L
注意我还没有粘贴导入/调用函数的东西,因为它与问题无关。
答案 0 :(得分:1)
你的print语句在for循环中,所以它将为L中的每个元素打印L.
尝试将其缩进到与for循环相同的级别,将其置于循环外
答案 1 :(得分:1)
你的print语句在for中,所以它将对列表中的每个元素执行一次:)。
尝试做这样的事情:
def shuffle(L, nswaps):
n = 0
for item in L:
while n < nswaps:
card_one = choose(L)
card_two = choose(L)
if card_two == card_one:
card_two = choose(L)
n += 1
L[card_one], L[card_two] = L[card_two], L[card_one]
print L
答案 2 :(得分:0)
小心缩进:
def shuffle(L, nswaps):
n = 0
for item in L:
while n < nswaps:
card_one = choose(L)
card_two = choose(L)
if card_two == card_one:
card_two = choose(L)
n += 1
L[card_one], L[card_two] = L[card_two], L[card_one]
print L
请注意,print L
语句与for
循环的内容处于同一级别(这就是每次循环时调用它的原因)。
从print L
之前的空格中删除四个空格,一切都应该顺利。