Python 全局变量不保存值

标签 python global

嘿,我对 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()

最佳答案

您在代码的开头定义了x,我认为这是将a转换为整数,以便您可以对其进行操作:

x = int(a)

当您在 Call() 函数中询问所需的经验量时:

a = input("How much xp?\n")

x 永远不会改变,因为赋值 x = int(a) 不会自动再次发生!

重新分配a后,您需要重新分配x:

a = input("How much xp?\n")
x = int(a)

但请记住,使用全局变量通常是不好的编程习惯,并且您的程序中实际上不需要其中的某些变量。例如,a 只是一个临时变量,旨在保存变成 x 的字符串,而像 x 这样的变量可以作为参数传入.

此外,我绝对建议在代码中使用一些更具描述性的变量。这不是高中代数:变量可以是任意长度,所以你应该解释一下 a 类似于 input_stringx 类似于经验,而j类似于响应

关于Python 全局变量不保存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615649/

相关文章:

python - 使用ffmpeg读取streamlink m3u8文件

python - 无法将带有 Poetry 的 Python 工件发布到 Google Artifact Registry,因为 "HTTP Error 413: Request Entity Too Large"

java - 全局对象的成员变量也应该设为全局吗?

python - Numpy 重复一行或一列

python 正则表达式仅保留以字母开头并以 [a-zA-Z0-9] 继续的单词

python - 我必须做 StringIO.close() 吗?

javascript - “leaking” 进入全局范围是什么意思?

global-variables - 如何清除或删除 julia 中的全局变量?

通过 Globals API 的 Java 连接导致 StackOverflowError

java - 如何从java中的私有(private)体访问变量