python - 将整数从一个 def 编辑到另一个
问题描述
您好,如果已经回答了类似的问题,我们深表歉意,但我找不到类似的帖子。我对 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。这是一个学习和成长的好社区,所以希望你能充分利用它。
正如您自己指出的那样,main
并且trap
不了解user_health
,因为 的范围user_health
仅限于 的character_start
。虽然出于各种原因通常不建议使用全局变量,但我不会在这里详细说明(为此,您可以参考这个线程),但下面介绍的是一种可能的实现。修改后的代码段附有注释供参考。
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
函数所示)
推荐阅读
- php - 在会话中升级到 PHP 7 后出现问题
- php - 如何解决重复数据
- mongodb - 与mongodb中不区分大小写的完全匹配
- r - 每次按照特定分布分配值时如何获得相同的结果
- javascript - 与 Reactstrap 反应的常见删除模态组件
- r - 闪亮的应用程序功能,用于提示用户输入并将输入分配给变量
- python - Traitlets:“实例字典”的最佳方式?
- xamarin.forms - 'BBDXamarinForms.Droid.Library.Config.BBDXamarinConfig' 的类型初始化程序引发异常
- jenkins - 我可以通过环境变量获取 jenkins xunit 结果吗?
- ios - Tableview 不在滚动视图内滚动?这是什么原因?