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

时间:2017-02-05 18:53:52

标签: python python-3.x syntax-error global-variables

首先,我必须告诉你,我对编码完全不熟悉,所以我遇到的问题可能是有史以来最愚蠢的错误造成的,如果有的话,对不起!

我正在尝试制作能够计算+, - ,*,/的计算器。 它也应该给出一条错误消息,如果收到的那个无效,则要求一个新的操作符号。为了让计算机知道函数“main”是否正在运行,因为它收到了无效的函数,或者它是第一次运行,我试图使用一个名为“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()

3 个答案:

答案 0 :(得分:1)

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

global check = 1

此处您不需要global,此处checkglobal

if(global check == 1)global check = global check + 1也不能有效使用global

相反,在main()中声明checkglobal

def main():
    global check

答案 1 :(得分:0)

像这样使用

check=10

def function() : 

     global check

     if(check==1):

           #blablabla

global关键字可以帮助您为函数带来价值...然后,在函数中再次使用它是没有用的和不必要的...

为简单起见,global帮助您将您的朋友带回家,然后您无需再带他,因为他已经在这里...

答案 2 :(得分:-1)

默认情况下,在函数外部和函数内部定义的任何同名变量分别为import 'core-js/stable' global。如果需要在函数内部更改local变量值或需要使global变量local(可用于所有其他函数),则仅需要定义'{ {1}}”明确地放在函数内部。

示例:

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 变量名没有冲突,则不需要在函数内声明local