0

给定的是一副有序的n纸牌,编号1n,卡片1在顶部,卡片n在底部。

只要一副牌中至少有两张牌,就会执行以下操作:

  • 扔掉最上面的牌,把现在在牌堆顶上的牌移到牌堆底。

我的任务是找出最后一张k弃牌和最后一张剩余牌的顺序。

  • 每行输入包含两个非负数

    • n, 在哪里n ≤ 5000

    • k, 在哪里k < n

  • 对于每个输入行产生两行输出。

    • k张弃牌的顺序

    • 剩下的最后一张卡。

    请参阅示例以了解预期的格式。

样本输入

7 2
19 4
10 5
6 3
4000 7

样本输入的输出

Last 2 cards discarded: [4, 2]
Remaining card:  6
Last 4 cards discarded: [2, 10, 18, 14]
Remaining card:  6
Last 5 cards discarded: [9, 2, 6, 10, 8]
Remaining card:  4
Last 3 cards discarded: [5, 2, 6]
Remaining card:  4
Last 7 cards discarded: [320, 1344, 2368, 3392, 832, 2880, 1856]
Remaining card:  3904

我的代码将继续打印出确切的答案,但下一行没有。
我很困惑为什么每次输出后都会打印 None 。

这是我的代码:

def throw_card(n,k):
    lst=[]
    bst=[]
    for i in range(1,n+1):
        lst.append(i)

    while lst[0]!=lst[1] and len(lst)>1 and n<=5000 and k<n:
        bst.append(lst.pop(0))

        if len(lst)==1:
            break
        else:
            lst.append(lst[0])
            lst.remove(lst[0])

    print('Last',k,'cards discarded: ',bst[n-(k+1):])
    print('Remaining card: ',lst.pop())

print(throw_card(7,2))
print(throw_card(19,4))
print(throw_card(10,5))
print(throw_card(6,3))
print(throw_card(4000,7))

我的输出:

Last 2 cards discarded:  [4, 2]
Remaining card:  6
None
Last 4 cards discarded:  [2, 10, 18, 14]
Remaining card:  6
None
Last 5 cards discarded:  [9, 2, 6, 10, 8]
Remaining card:  4
None
Last 3 cards discarded:  [5, 2, 6]
Remaining card:  4
None
Last 7 cards discarded:  [320, 1344, 2368, 3392, 832, 2880, 1856]
Remaining card:  3904
None
4

1 回答 1

1

当你这样做时print(throw_card(7,2)),你正在打印你的throw_card函数的返回值。您的函数不返回任何内容(又名None

你应该做的只是调用你的函数。

throw_card(7,2)
throw_card(19,4)
throw_card(10,5)
throw_card(6,3)
throw_card(4000,7)
于 2013-09-28T21:50:44.683 回答