纸牌游戏,循环返回无

Posted

技术标签:

【中文标题】纸牌游戏,循环返回无【英文标题】:Cardgame, loop returns None 【发布时间】:2021-01-07 10:37:55 【问题描述】:

我似乎无法正常工作。我有一个简单的更高或更低纸牌游戏的循环,我想做的是返回卡片或卡片的任何值,以及积分,以便我可以腌制它们进行存储并玩这个游戏一遍又一遍。 但是,我只能在循环的第一次迭代中返回卡片和积分。每当在函数中再次调用 gameloop 函数时,最后一行的 print 函数都会打印 None。

def gameloop(rand_card, rand_type, point):
    point = point
    card = rand_card, rand_type
    print("The card is:")
    print_card(card[0], card[1])
    print("Do you bet on a higher or lower value to be drawn? (H/L)")
    ans = input().lower()

    if ans == "q":
        return card, point

    new_card = random_card(), random_type()
    print("The new card is:")
    print_card(new_card[0], new_card[1])


    if ans == "h":
        if new_card[0] > card[0]:
            print("Congratulations, the new card was higher. You have been awarded one point.")
            point += 1
        elif new_card[0] < card[0]:
            print("Sorry, the new card was lower. One point has been deducted.")
            point -= 1
        else:
            print("It's a tie! No points deducted.")

    elif ans == "l":
        if new_card[0] < card[0]:
            print("Congratulations, the new card was lower. You have been awarded one point.")
            point += 1
        elif new_card[0] > card[0]:
            print("Sorry, the new card was higher. One point has been deducted.")
            point -= 1
        else:
            print("It's a tie! No points deducted.")

    print("You have a total of  points.".format(point))
    gameloop(new_card[0], new_card[1], point)

data = gameloop(random_card(), random_type(), 0)

print(data)

【问题讨论】:

gameloop 函数没有 return 任何东西。因此返回无 gameloop 函数确实有返回卡,点但它仍然返回无,经过一次迭代。只有一次迭代它返回卡片和点,但这在第一次迭代中真的没有帮助。 您的意思是:return gameloop(new_card[0], new_card[1], point) 我还是个新手,全新的,但我只是用旧的 return 语句替换了它,这让我陷入了一个循环。 如果您立即退出(按 q 作为您的首选),您可以看到返回值。但是如果在 q 之前至少按一次 H 或 L,它不会返回任何内容(None),并且 data 的值变为 None。为了使其更简单,请避免使用递归调用(在自身内部调用函数)并在函数外部循环 gameloop()。 【参考方案1】:

return gameloop(new_card[0], new_card[1], point) 而不是 gameloop(new_card[0], new_card[1], point),解决问题,谢谢quamrana。

【讨论】:

以上是关于纸牌游戏,循环返回无的主要内容,如果未能解决你的问题,请参考以下文章

C++基础---无返回值函数(void函数)

java 循环变量

类的无参循环

return break continue

无法为元组列表中的数据返回无

创建游戏循环(睡眠时间帮助)