[英]How do I edit a global variable within a function
我是 python 的新手,我正在嘗試制作一個基於文本的小型游戲,我列出了玩家的健康狀況,當我嘗試在 function 中編輯變量時,它不會更改全局變量,並且何時我嘗試使用全局命令將其定義為全局變量它說參數已經是全局變量並且返回也不起作用?
import random
health = 100
dHealth = 1000
def attack(dHealth):
attack = random.randint(5,50)
dHealth = dHealth - attack
print("You dealth", attack,"damage, the dragon has", dHealth,"health left!")
attack(dHealth)
print(dHealth)
我希望變量從 1000 到 go 到 995 到 950 之間的數字
最好的解決方案是不要將其用作全局變量。 attack
應該取一個值並返回更新后的值。
import random
health = 100
dHealth = 1000
def attack(monster, health):
attack = random.randint(5,50)
health = health - attack
print("You dealt", attack,"damage, the ", monster, " has", health,"health left!")
return health
dHealth = attack("dragon", dHealth)
print(dHealth)
由於從理論上講, attack
不再特定於龍的健康狀況,因此它需要一個額外的參數來為調用print
的被攻擊的怪物命名。
因此,您需要在 function inside
指定它是您要嘗試更改的全局變量。 代碼看起來像這樣:
import random
health = 100
dHealth = 1000
def attack(): # If you pass dHealth here, it only changes the local instance and not
# the global one
global dHealth
attack = random.randint(5,50)
dHealth = dHealth - attack
print("You dealth", attack,"damage, the dragon has", dHealth,"health left!")
attack()
print(dHealth)
但是還有一種方法,就是返回一個function的值賦值給dHealth
代碼:
import random
health = 100
dHealth = 1000
def attack(dHealth):
attack = random.randint(5,50)
dHealth = dHealth - attack
print("You dealth", attack,"damage, the dragon has", dHealth,"health left!")
return dHealth
dHealth = attack(dHealth) # Here, the returned value of dHealth after
# reduction is assigned to the global variable
# so no need to use global variables
print(dHealth)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.