在Python中打印问题

时间:2011-11-16 17:56:12

标签: python list printing shuffle

我觉得自己只是一个白痴甚至问这个,但有没有人知道为什么我的代码在每次洗牌后打印列表?

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

注意我还没有粘贴导入/调用函数的东西,因为它与问题无关。

3 个答案:

答案 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之前的空格中删除四个空格,一切都应该顺利。