Python - 调用自身的方法

时间:2017-03-29 16:26:21

标签: python

我正在努力学习Python。我刚刚制作了一个简单的摇滚,纸张,剪刀游戏。我遇到了一个小问题。

当每个玩家选择相同的项目时,游戏结束。

enter image description here

当玩家犯了错误并且必须再次选择时,该变量为空。请注意,播放器1说“无”。

enter image description here

这是方法。问题出现在else分支中。

def play1():
    player1_choice = input("Player 1 - Go: ")
    if (check(player1_choice)):
        return player1_choice
    else:
        print(error_msg)
        play1() # Something is wrong here.

我做错了什么?我该如何解决?感谢

2 个答案:

答案 0 :(得分:2)

如果不需要,请不要使用递归。试试这个:

def play1():
    while True:
        player1_choice = input("Player 1 - Go: ")
        if (check(player1_choice)):
            return player1_choice
        else:
            print(error_msg)

答案 1 :(得分:0)

这是一个经典的 while 循环应用程序;你想循环,直到你得到一个合理的答案(虽然已知的答案是不可接受的),将该答案返回给调用程序。

当您在进入循环时知道时,使用 for 循环您需要重复多少次。

当你有一份工作时,递归是正确的:

  1. 做一些简单的事情;
  2. 将剩余的任务减少到更小的范围,更接近于一个微不足道的"已完成的"状态;
  3. 将较小的任务传递给相同的函数以进行进一步处理。
  4. 在此应用程序中,从用户那里得到错误答案并不能使您比起始时更接近解决方案(有效答案)。现在的任务并不简单。进一步处理 是相同的,但你也可以通过迭代循环得到它。