我试图让两个怪物战斗,给用户输入,并不断得到一个全局错误?

2024-04-30 05:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

def globalSuit():
  global Affinity1
  global HP1
  global AD1
  global Affinity2
  global HP2
  global AD2

def getmonsterData():
 monster1 =  raw_input("Enter the Monster 1's Affinity|HP|AD> ")
 x = monster1.index('|')
 y = monster1.index('|',x+1)
 Affinity1 = monster1[:x]
 HP1 = monster1[x+1:y]
 AD1 = monster1[y+1:]
 printNow(Affinity1+"|"+HP1+"|"+AD1)

 monster2 =  raw_input("Enter the Monster 2's Affinity|HP|AD> ")
 x = monster2.index('|')
 y = monster2.index('|',x+1)
 Affinity2 = monster2[:x]
 HP2 = monster2[x+1:y]
 AD2 = monster2[y+1:]
 printNow(Affinity2+"|"+HP2+"|"+AD2)
 battleNow();

def battleNow():
 if (AD1 > AD2):
    printNow("Monster 1 is stronger")
 if (AD1 < AD2):
    printNow("Monster 2 is stronger")

目前的主要问题是,当我运行这个,理想情况下,用户将输入怪物数据1和2是这样的

def getmonsterData():
     monster1 =  raw_input("Enter the Monster 1's Affinity|HP|AD> ")
     x = monster1.index('|')
     y = monster1.index('|',x+1)
     Affinity1 = monster1[:x]
     HP1 = monster1[x+1:y]
     AD1 = monster1[y+1:]
     printNow(Affinity1+"|"+HP1+"|"+AD1)

     monster2 =  raw_input("Enter the Monster 2's Affinity|HP|AD> ")
     x = monster2.index('|')
     y = monster2.index('|',x+1)
     Affinity2 = monster2[:x]
     HP2 = monster2[x+1:y]
     AD2 = monster2[y+1:]
     printNow(Affinity2+"|"+HP2+"|"+AD2)`

然后正如您在代码底部看到的,我也将它输入到下一个方法battleNow(); 理想情况下,它会提供怪物信息1和2,在上一个方法中输入,然后我可以采取这3个变量,AFF | HP | AD,我想我在battleNow方法中,我可以做一些if/else语句,根据亲和因子/他们的HP/和他们的AD,哪个更强

 if (AD1 > AD2):
    printNow("Monster 1 is stronger")
 if (AD1 < AD2):
    printNow("Monster 2 is stronger")`

这将决定哪个怪物更强,但我似乎无法让它识别出什么AD1:AD2/Hp1:Hp2/aff1:aff2在getMonsterData()之外

我得到的错误是

"======= Loading Progam =======
Enter the Monster 1's Affinity|HP|AD> Earth|50|10
Earth|50|10
Enter the Monster 2's Affinity|HP|AD> Water|55|10
Water|55|10
The error was:AD1
Name not found globally.
A local or global name could not be found. You need to define the function or variable before you try to use it in any way."

Tags: theindexglobaladhpenteraffinitymonster
2条回答

函数getMonsterData()或main应该调用函数globalSuit()。 当您调用函数battleNow()时,您得到的错误是您的变量尚未定义为全局变量。 修复示例:

def getmonsterData():
     globalSuit()
     monster1 =  raw_input("Enter the Monster 1's Affinity|HP|AD> ")
     x = monster1.index('|')
     y = monster1.index('|',x+1)
     Affinity1 = monster1[:x]
     HP1 = monster1[x+1:y]
     AD1 = monster1[y+1:]
     printNow(Affinity1+"|"+HP1+"|"+AD1)

     monster2 =  raw_input("Enter the Monster 2's Affinity|HP|AD> ")
     x = monster2.index('|')
     y = monster2.index('|',x+1)
     Affinity2 = monster2[:x]
     HP2 = monster2[x+1:y]
     AD2 = monster2[y+1:]
     printNow(Affinity2+"|"+HP2+"|"+AD2)`

我所要做的就是不为我的全局变量创建一个单独的方法,而是将它放在主getmonsterData()中

我想我已经解决了我需要的。。谢谢大家!你知道吗

相关问题 更多 >