簡體   English   中英

為什么我不斷出現最大遞歸深度超出錯誤?

[英]Why do I keep getting the maximum recursion depth exceeded error?

我正在為數字猜謎游戲編寫代碼,必須遞歸出售。 但是當我執行它時,我得到這個錯誤:超過最大遞歸深度。 這是為什么?

這是我的代碼:

import random
n = random.randrange(0,100)
guess = int(input("Introduce a number: "))
def game(guess):
    if guess == n:
        print("Your guess is correct.")
    elif guess > n:
        print("Your guess is too high")
        game(guess)
    elif guess < n:
        print("Your guess is too low")
        game(guess)
game(guess)

原因是,除非第一次調用guess等於n ,否則您將具有無限遞歸,因為您以相同的guess值調用game 您沒有提供任何方法來停止遞歸。

您的游戲功能不需要任何參數。 您需要使用else代替最后一個elif並且guess = int(input("Introduce a number: "))步驟應該在您的游戲函數中(已測試):

import random
n = random.randrange(0,100)
def game():
    guess = int(input("Introduce a number: "))
    if guess == n:
        print("Your guess is correct.")
    elif guess > n:
        print("Your guess is too high")
        game()
    else:
        print("Your guess is too low")
        game()
game()

滿足guess > nguess < n條件時,由於無限循環而導致出現maximum recursion depth exceeded 要知道進一步請參考這個問題

下面的代碼應按預期工作。

import random,sys
n = random.randrange(0,100)

def game(guess):
    if guess == n:
        print("Your guess is correct.")
        sys.exit()
    elif guess > n:
        print("Your guess is too high")
    elif guess < n:
        print("Your guess is too low")

while True:
    guess = int(input("Introduce a number: "))
    game(guess)
  1. 您需要使用如下所示的random.randint()函數: n = random.randint(0, 100)
  2. 建議使用while循環。
  3. 您沒有再次調用guess = int(input("Introduce a number: "))

import random
n = random.randint(0, 100)
guess = int(input("Introduce a number: "))

def game(guess):
    while guess != n:
        if guess > n:
            print("Your guess is too high")
        elif guess < n:
            print("Your guess is too low")
        guess = int(input("Introduce a number: "))

    else:
        print("Your guess is correct.")

game(guess)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM