gpt4 book ai didi

python - 将整数从一个 def 编辑到另一个

转载 作者:行者123 更新时间:2023-12-03 21:56:51 25 4
gpt4 key购买 nike

你好,如果类似的问题得到了回答,我深表歉意,但我找不到类似的帖子。我对 python 3 还是比较陌生,英语有点粗糙。

我启动程序,它转到 character_start(),在那里它要求一个名称并将健康变量设置为 10。然后它调用 main(),它再次显示健康并询问用户他们想去哪里。至于现在唯一的选项是 1,它会将您带到 trap() 函数。用户将被 1 个生命值击中,它应该返回 main(),在那里它会向他们显示 1 个缺失的生命值。

我认为问题在于即使我在 def 之外编写它,它也不会将 user_health 识别为全局变量。

谢谢,这是我的代码。

import random

def character_start():
user_name = input("Name: ")
user_health = 10
main()


def main():
print("Health: ", user_health)
print("Type 1 to walk into a trap.")
main_choice = int(input("Choice: "))
if (main_choice == 1): trap()


def trap():
user_health = user_health - 1
print("1 point of damage.")
main()


character_start()

最佳答案

欢迎来到 SO。这是一个学习和成长的好社区,所以希望你能充分利用它。

正如您自己指出的那样,maintrap不知道user_health , 自 user_health 的范围仅限于 character_start 的限制.虽然出于各种原因,通常不推荐使用全局变量,但我不会在这里详细说明(为此,您可以引用 this thread ),但下面介绍了一种可能的实现方式。修改后的代码段附有注释供引用。

import random

user_health = 10 # declare global var


def character_start():
user_name = input("Name: ")
main()


def main():
print("Health: ", user_health) # main has access to user_health
print("Type 1 to walk into a trap.")
main_choice = int(input("Choice: "))
if (main_choice == 1):
trap()


def trap():
global user_health # tell trap that user_health is a global var
user_health = user_health - 1 # alter that global var
print("1 point of damage.")
main()


character_start()


这里的关键要点是
  • 全局变量在任何函数的范围之外声明
  • 如果你想修改一个全局变量,通过 global 明确告诉函数某个变量名指的是一个全局变量。关键字(如 trap 函数所示)
  • 关于python - 将整数从一个 def 编辑到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61501515/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com