Python将值传递给另一个函数计算器程序

时间:2016-11-09 03:47:55

标签: python global-variables

#This part of the code will only get numbers from user
while True:
#Using while True will allow me to loop and renter if user input is wrong. While True will go above Try Catch
    try:
# Using try: and except: will allow to end the program without crash however then need to be indented
# Try goes before the def name
        def getNumbers():

            num1=int(input("Enter 1st number: "))
            num2=int(input("Enter 2nd number: "))


        getNumbers()
        break# the while will stop when both values are numbers
    except:
        print("Incorrect input detected, try again")

#This part of the code will add the 2 numbers
def addNums():
    What do I put here so that  I can use num1+num2
    addNums()

def subNums():
    What do I put here so that  I can use num1-num2
    addNums()

我写了一个计算器程序但是在那里我将side1和num2声明为side getNumbers def中的全局变量。有人提到这不是一个好/理想的方式,这就是我想尝试这种方法的原因。

提前致谢。

2 个答案:

答案 0 :(得分:0)

要在函数内部使用全局变量,请使用global关键字:

x = 1
y = 2
def add() :
    global x, y
    return x + y

修改

实际上,你的问题"真的不清楚。你说你不愿意在代码中使用全局变量,但你写道:

def addNums():
    What do I put here so that  I can use num1+num2
    addNums()

问题是这个地方num1num2 不存在。如果你想使用它们,那么它们全局变量。

据我所知,你想要的只是一个功能:

def addNums(x, y):
    return x+y

addNums(num1, num2)

答案 1 :(得分:0)

我不知道你的疑问是什么,在你的帖子里还不清楚。 你为什么不能这样做(只是因为你可以做得更好): -

  

块引用

def subNums(a, b):
    return (a - b)

def addNums(a, b):
    return (a + b)

def getNumbers():
    while True:
        try:
            num1 = int(input("Enter 1st number: "))
            num2 = int(input("Enter 2nd number: "))        
            return (num1, num2)
        except:
            print("Incorrect input detected, try again")

a, b = getNumbers()
print ("sum of %d and %d : %d" % (a, b, addNums(a, b)))
print ("difference of %d and %d : %d" % (a, b, subNums(a, b)))

希望这会有所帮助。