在 Python 中的循环外调用迭代变量

我正在制作一个简单的猜谜游戏。


我在一个名为的函数中有一个变量guess_left,它预设了一个值。在 while 循环中,每当有人猜错时,该值就会减 1,直到没有更多的猜测可用并且循环中断。


我如何将递减的变量从循环中取出并在该人获胜时将其作为获胜消息打印出来,如print(f"Congrats. You won with {guess_left} tries left.")Or 经过一定次数的尝试?


完整代码:


from random import randint



def generator():

    return randint(1, 1024)



def rand_guess():


    random_number = generator()


    guess_left = 25


    flag = 0


    while guess_left > 0:

        guess = int(input("Please enter your lucky number: "))

        if guess == random_number:

            flag = 1

            break

        elif guess < random_number:

            guess_left -= 1

            print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")

        else:

            guess_left -= 1

            print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")


    if flag == 1:

        return True

    else:

        return False



if __name__ == '__main__':

    if rand_guess() is True:

        print(f"Congrats! You won.")

    else:

        print("Sorry, you lost the game!")


阿波罗的战车
浏览 287回答 4
4回答

收到一只叮咚

有许多不同的方法可以解决这样的问题,您必须考虑它们并决定哪种方法最适合您的编程风格。使 guess_left 成为全局变量:&nbsp;从纯技术的角度来看,您可以创建guess_left一个全局变量以便在rand_guess函数外部访问它,返回剩余的猜测数量&nbsp;然而,通常最好不要创建太多全局变量,因为它会导致代码难以阅读(并且经常有错误)。您是否考虑过返回rand_guess剩余的猜测数量。将游戏结束状态打印消息移动到 rand_guess 函数中:您还可以将游戏结束时的所有打印语句移动到函数内部&nbsp;rand_guess,即您当前返回 true 或 false 的位置。在考虑选择哪种解决方案时,请考虑以下事项:一个月后我是否仍能理解这段代码的作用?其他人能理解这段代码的作用吗?

慕桂英3389331

这是一个从一个函数返回多个结果的例子。&nbsp; &nbsp; if flag == 1:&nbsp; &nbsp; &nbsp; &nbsp; return [True, guess_left]&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return [False, guess_left]&nbsp; &nbsp; if __name__ == '__main__':&nbsp; &nbsp; &nbsp; &nbsp; result = rand_guess()&nbsp; &nbsp; &nbsp; &nbsp; if result[0] is True:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guess_left = result[1]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(f"Congrats. You won with {guess_left} tries left.")&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Sorry, you lost the game!")

喵喔喔

好吧,定义一个全局变量是可能的,但通常被认为是糟糕的风格,因为随着项目的增长,它们往往很难跟踪。范围界定是一件美丽的事情!你为什么不尝试这样做,返回剩下的猜测次数:def rand_guess():&nbsp; &nbsp; random_number = generator()&nbsp; &nbsp; for i in range(25, 0, -1):&nbsp; &nbsp; &nbsp; &nbsp; guess = int(input("Please enter your lucky number: "))&nbsp; &nbsp; &nbsp; &nbsp; if guess == random_number:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return i-1&nbsp; &nbsp; return 0if __name__ == '__main__':&nbsp; &nbsp; guesses_left = rand_guess()&nbsp; &nbsp; if guesses_left:&nbsp; &nbsp; &nbsp; &nbsp; print(f"Congrats! You won with {guesses_left} guesses left.")&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print("Sorry, you lost the game!")

隔江千里

您可以初始化guess_left为全局变量,并在函数内部不断对其进行更新。像这样:from random import randintguess_left = 25def generator():&nbsp; &nbsp; return randint(1, 1024)def rand_guess():&nbsp; &nbsp; random_number = generator()&nbsp; &nbsp; flag = 0&nbsp; &nbsp; global guess_left&nbsp; &nbsp; while guess_left > 0:&nbsp; &nbsp; &nbsp; &nbsp; guess = int(input("Please enter your lucky number: "))&nbsp; &nbsp; &nbsp; &nbsp; if guess == random_number:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flag = 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; &nbsp; &nbsp; elif guess < random_number:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guess_left -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(f"Wrong Guess. Your number should be higher! You have {guess_left} tries left.")&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guess_left -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(f"Wrong Guess. Your number should be lower! You have {guess_left} tries left.")&nbsp; &nbsp; if flag == 1:&nbsp; &nbsp; &nbsp; &nbsp; return True&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return Falseif __name__ == '__main__':&nbsp; &nbsp; if rand_guess() is True:&nbsp; &nbsp; &nbsp; &nbsp; print(f"Congrats. You won with str(guess_left) tries left.")&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print("Sorry, you lost the game!")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python