Python:使用全局变量的无效语法

2024-09-26 22:49:29 发布

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

首先,我必须告诉你,我对编码是完全陌生的,所以我遇到的问题可能是有史以来最愚蠢的失误造成的,如果是,我很抱歉!

我正在试着做一个计算器,它能计算+,-,*,/。 它还应该给出一个错误消息,并要求一个新的操作符号,如果收到的是无效的。为了让计算机知道函数“main”是因为接收到无效的函数而运行,还是因为它是第一次运行,我尝试使用一个名为“check”的全局变量。开始时,check设置为1,因此计算机在请求操作时将使用第一个短语。如果输入了无效操作,则变量“check”将增加1,这将导致在请求新操作时出现第二个短语(错误消息)。

问题是,当我尝试运行脚本时,第一行出现语法错误,其中“global check=1”。我做错什么了?

以下是我的代码:

global check = 1

#returns num1 + num2
def add(num1,num2):
    return num1 + num2

#returns num1 - num2
def sub(num1,num2):
    return num1 - num2

#returns num1 * num2
def mul (num1,num2):
    return num1 * num2

#returns num1 / num2
def div (num1,num2):
    return num1 / num2

#Main Function
def main():
    if(global check == 1): #checks if "main" has been read before, if it has, then it is read agian because of invalid operation, and the global "check" should be higher than 1.
        operation = input("Choose an operation! (+,-,*,/")
    else:
        operation = input("You must choose a valid operation! (+,-,*,/")
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"):
        global check = global check + 1
        main()
    else:
        var1 = int(input("Enter number 1 :"))
        var2 = int(input("Enter number 2 :"))
    if(operation == "+"):
        print(add(var1,var2))
    elif(operation == "-"):
        print(sub(var1,var2))
    elif(operation == "*"):
        print(mul(var1,var2))
    else:
        print(div(var1,var2))


main()

Tags: andinputreturnifmaindefcheckoperation
2条回答

默认情况下,在函数外部和函数内部定义的任何同名变量分别是globallocal。如果需要在函数内部更改global变量值,或者需要使local变量成为global(可用于所有其他函数),则只需要在函数内部显式定义global

示例:

a=10


def func1():
global b
global a
print('initial global a',a)
b=10
a=15
print('local and modified global a',a)


def func2():
print('global b, originated form func1',b)
print('new global a, modified at func1',a)



func1()
func2()

会给你结果:

initial global a 10
local and modified global a 15
global b, originated form func1 10
new global a, modified at func1 15

注意:如果函数中localglobal变量名没有冲突,则不需要在函数中声明global

你把global放在不需要的地方:

global check = 1

这里不需要globalcheck已经global在这里了。

if(global check == 1)global check = global check + 1也不是global的有效用法。

相反,在main()中将check声明为global

def main():
    global check

相关问题 更多 >

    热门问题