嘿,我是python的新手,但我已经完成了一些c ++和Javascript编程,我只是看不出为什么我的变量x没有保持其值。
感谢您的帮助,祝您度过愉快的一天!
a = input("How much xp? :\n")
x = int(a)
w = 100
z = 1
h = 0
def Call():
global a
print "\n"
print x
print "\n"
print "Would you like to Continue ? \n Y/N \n"
j = raw_input("")
if j == "Y":
print "Call \n"
a = input("How much xp? :\n")
Level()
elif j == "N":
return 0
else:
return 0
def Level():
global x
global w
global z
global h
if x >= w:
z = z + 1
print "Your level is " + str(z)
h = x % w
x = x + h
w = w + 50
Call()
else:
print "Your level is " + str(z)
Call()
Level()
答案 0 :(得分:2)
您在代码的最开头定义x
,我认为这是将a
转换为整数,以便您可以对其进行操作:
x = int(a)
当您在Call()
函数中询问所需的经验时:
a = input("How much xp?\n")
x
永远不会更改,因为作业x = int(a)
不会再次自动发生!
重新分配x
后,您需要重新分配a
:
a = input("How much xp?\n")
x = int(a)
但请记住,使用全局变量通常是不好的编程习惯,而且程序中确实没有任何需要它们。例如,a
只是一个临时变量,用于保存变为x
的字符串,而像x
这样的变量可以作为参数传入。
另外,我肯定建议在代码中使用一些更具描述性的变量。这不是高中代数:变量可以是任意长度,因此您应该解释a
类似input_string
,x
类似experience
和{{ 1}}类似于j
。
答案 1 :(得分:1)
问题出在Call()函数中。用户输入与变量“a”相关联,您不在程序的其余部分中使用该变量。似乎你的意思是将它与变量'x'相关联,而不是。
这是我建议的解决方案:
1.在Call()函数的开头插入global x
,以便您可以在函数内修改它
2.替换
a = input("How much xp?\n")
x = int(a)
与
x = input("How much xp?\n")
(两次,在第一行,也在你的Call()函数中)
这是一个实现类似目的的简短Python程序。我试图尽可能地保留你的命名系统。
w = 100
z = 1
h = 0
while True:
x = input("How much xp? :\n")
if x >= w:
z = z + 1
h = x % w
x = x + h
w = w + 50
print "Your level is " + str(z)
if raw_input("Would you like to continue?\nY/N\n") != "Y":
break
注意: