Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用新用户输入覆盖以前用户输入的变量_Python_Python 3.x - Fatal编程技术网

Python 用新用户输入覆盖以前用户输入的变量

Python 用新用户输入覆盖以前用户输入的变量,python,python-3.x,Python,Python 3.x,我正在尝试构建一个计算器,但我有点纠结于如何使用相同的变量用新值覆盖用户输入。我想要的是,当用户在菜单上打招呼时,当用户输入“5”时,它会提示输入变量“num1”和“num2”的新输入。我有一种感觉,这是非常容易做到的,但出于某种原因,我卡住了 我在正确的elif中尝试了正常的-num1=int(输入(“输入新的第一个数字”)等等,但是我得到了: UnboundLocalError:赋值前引用的局部变量“num1” 这是我的密码: num1 = int(input("Enter first nu

我正在尝试构建一个计算器,但我有点纠结于如何使用相同的变量用新值覆盖用户输入。我想要的是,当用户在菜单上打招呼时,当用户输入“5”时,它会提示输入变量“num1”和“num2”的新输入。我有一种感觉,这是非常容易做到的,但出于某种原因,我卡住了

我在正确的elif中尝试了正常的-
num1=int(输入(“输入新的第一个数字”)
等等,但是我得到了:

UnboundLocalError:赋值前引用的局部变量“num1”

这是我的密码:

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))


def calculate():

    print('''The numbers you have selected to calculate are: 
    {}, and {} \n'''.format(num1, num2))

    menu = int(input(''' Main Menu:
    1. Addition
    2. Subtraction 
    3. Multiplication
    4. Division
    5. Enter new numbers
    6. Exit\n '''))

    if menu == 1:
        add = addition(num1, num2)
        print("{} + {} = {}".format(num1, num2, add))
    elif menu == 2:
        sub = subtract(num1, num2)
        print("{} - {} = {}".format(num1, num2, sub))
    elif menu == 3:
        multi = multiply(num1, num2)
        print("{} x {} = {}".format(num1, num2, multi))
    elif menu == 4:
        div = divide(num1, num2)
        print("{} / {} = {}".format(num1, num2, div))
    elif menu == 5:
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    elif menu == 6:
        print("Exiting...")
    else:
        print("You have not entered a valid input.")

    rerun()

代码的问题在于
num1
num2
变量未在函数
calculate
中定义。因此,当您尝试访问函数内的
num1
时,它将抛出错误

def calculate():
    num1 = int(input("Enter first number: "))
    num2 = int(input("Enter second number: "))

    print('''The numbers you have selected to calculate are: 
    {}, and {} \n'''.format(num1, num2))

    menu = int(input(''' Main Menu:
    1. Addition
    2. Subtraction 
    3. Multiplication
    4. Division
    5. Enter new numbers
    6. Exit\n '''))

    if menu == 1:
        add = addition(num1, num2)
        print("{} + {} = {}".format(num1, num2, add))
    elif menu == 2:
        sub = subtract(num1, num2)
        print("{} - {} = {}".format(num1, num2, sub))
    elif menu == 3:
        multi = multiply(num1, num2)
        print("{} x {} = {}".format(num1, num2, multi))
    elif menu == 4:
        div = divide(num1, num2)
        print("{} / {} = {}".format(num1, num2, div))
    elif menu == 5:
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    elif menu == 6:
        print("Exiting...")
    else:
        print("You have not entered a valid input.")

    rerun()

calculate()
您还可以尝试将变量
num1
num2
设置为全局变量

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))


def calculate():
    global num1, num2
    print('''The numbers you have selected to calculate are: 
    {}, and {} \n'''.format(num1, num2))

    menu = int(input(''' Main Menu:
    1. Addition
    2. Subtraction 
    3. Multiplication
    4. Division
    5. Enter new numbers
    6. Exit\n '''))

    if menu == 1:
        add = addition(num1, num2)
        print("{} + {} = {}".format(num1, num2, add))
    elif menu == 2:
        sub = subtract(num1, num2)
        print("{} - {} = {}".format(num1, num2, sub))
    elif menu == 3:
        multi = multiply(num1, num2)
        print("{} x {} = {}".format(num1, num2, multi))
    elif menu == 4:
        div = divide(num1, num2)
        print("{} / {} = {}".format(num1, num2, div))
    elif menu == 5:
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    elif menu == 6:
        print("Exiting...")
    else:
        print("You have not entered a valid input.")

    rerun()

calculate()
您还可以将变量作为参数传递给函数
calculate

num1=int(输入(“输入第一个数字:”) num2=int(输入(“输入第二个数字:”)


我有一种感觉,除非你将num1和num2作为列表,否则没有办法做到这一点,但我只是想知道是否有一种方法可以做到这一点,而不必使用列表。没有任何线索表明存在类似“全局”的东西-它工作得非常好!谢谢
def calculate(num1, num2):
    print('''The numbers you have selected to calculate are: 
    {}, and {} \n'''.format(num1, num2))

    menu = int(input(''' Main Menu:
    1. Addition
    2. Subtraction 
    3. Multiplication
    4. Division
    5. Enter new numbers
    6. Exit\n '''))

    if menu == 1:
        add = addition(num1, num2)
        print("{} + {} = {}".format(num1, num2, add))
    elif menu == 2:
        sub = subtract(num1, num2)
        print("{} - {} = {}".format(num1, num2, sub))
    elif menu == 3:
        multi = multiply(num1, num2)
        print("{} x {} = {}".format(num1, num2, multi))
    elif menu == 4:
        div = divide(num1, num2)
        print("{} / {} = {}".format(num1, num2, div))
    elif menu == 5:
        num1 = int(input("Enter first number: "))
        num2 = int(input("Enter second number: "))
    elif menu == 6:
        print("Exiting...")
    else:
        print("You have not entered a valid input.")

    rerun()

calculate(num1, num2)