簡體   English   中英

如何編輯 function 中的全局變量

[英]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.

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