Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我试图让两个怪物在给定用户输入的情况下战斗,并不断得到一个全局错误?_Python_Jython - Fatal编程技术网

Python I';我试图让两个怪物在给定用户输入的情况下战斗,并不断得到一个全局错误?

Python I';我试图让两个怪物在给定用户输入的情况下战斗,并不断得到一个全局错误?,python,jython,Python,Jython,然后,正如您在代码底部看到的,我也将其输入到下一个方法battleNow(); 理想情况下,它会提供上一个方法中输入的怪物信息1和2,然后我可以获取这3个变量,AFF | HP | AD,我想在现在的battleNow方法中,我可以根据亲和因子/他们的HP/和他们的AD,做出一些if/else语句,说明哪一个更强 def getmonsterData(): monster1 = raw_input("Enter the Monster 1's Affinity|HP|AD> "

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

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)`

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

"======= 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."

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


我想我已经解决了我需要的。。谢谢大家

这似乎没有解决问题。。我将代码更改为def globalSuit():global Affinity1 global HP1 global AD1 global Affinity2 global HP2 global AD2 def getmonsterData():globalSuit();monster1=raw|u输入(“输入怪物1的亲缘关系”| HP | AD>”)x=monster1.index(“|”)y=monster1.index(“|”,x+1)def battleNow():if(AD1>AD2):奇怪。为什么要在函数中声明全局变量,为什么不在每个函数的main或外部声明它们?我只知道问题是在getMonsterData()之外无法识别这三个变量;我想创建一个方法,并为这些变量填充全局命令,这将适用于battleNow();以及我打算实施的其他方法?
 if (AD1 > AD2):
    printNow("Monster 1 is stronger")
 if (AD1 < AD2):
    printNow("Monster 2 is stronger")`
"======= 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."
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)`