python 计算器的菜单

Menu for python calculator

我在python中创建了一个计算器,可以计算两个整数的加法、减法、乘法、除法或模数。执行什么方程式是基于从菜单中输入的数字,我希望用户在被问及是否“继续?”后能够在方程式后返回菜单。非常感谢任何帮助

print("MENU")
print("1. Add")
print("2. Subtract")
print("3. Multiply")
print("4. Divide")
print("5. Modulous")

menu = input("Enter your choice: ")
if int(menu) == 1:
 def additon(number1=int(input("Enter first number: ")), number2=int(input("Enter second number: "))):
    return(number1 + number2)
answer1 = additon()
print("Result:", answer1)

if int(menu) == 2:
 def subtraction(number1=int(input("Enter first number: ")), number2=int(input("Enter second number: "))):
    return(number1 - number2)
answer2 = subtraction()
print("Result: ", answer2)

if int(menu) == 3:
 def multiplication(number1=int(input("Enter first number: ")), number2=int(input("Enter second number: "))):
    return(number1 * number2)
answer3 = multiplication()
print("Result: ", answer3)


if int(menu) == 4:
 def division(number1=int(input("Enter first number: ")), number2=int(input("Enter second number: "))):
    return(number1 / number2)
answer4 = division()
print("Result: ", answer4)


if int(menu) == 5:
 def modulus(number1=int(input("Enter first number: ")), number2=int(input("Enter second number: "))):
    return(number1 % number2)
answer5 = modulus()
print("Result: ", answer5)

if int(menu) != 1 or 2 or 3 or 4 or 5:
 print("Not a valid option")
  1. 首先在程序的顶部定义一次你的函数,你是 当前在 if 语句中定义函数(例如加法)
  2. 将所有主要代码放在 'forever' (while True:) 循环中,这样每次循环都会打印出菜单,接受输入,然后显示结果 returns 到循环的顶部重新做一遍
  3. 当您读取用户输入时,在将其转换为整数之前,添加代码以检查用户是否输入了类似 'q' 的内容(表示退出),如果他们输入了,则使用 break 接受你退出 'forver' 循环并结束程序

这是一个框架版本:

def print_menu():
    """print the menu as show in your code"""

def addition():
   """your addition function"""
   ...

def subtraction():
  """your subtraction function"""
   ...

# etc


while True:                        # 'forever' loop

    print_menu()
    resp = input("your choice? ")
    if resp == 'q':                # user wants to quit
        break                      # so break out of forever loop

    resp = int(resp)               # change your resp to an integer
    if resp == 1:
        answer = addition()
    elif resp == 2:
        answer = subtraction()
    elif resp == 3:
        answer = multiplication()   
    elif resp == 4:
        answer = division()
    else:
        print("unknown choice, try again")
        continue                           # go back to top of loop

    print("The Answer Is", answer)



         

将您的代码包装在一个 while 循环中。以下代码应该可以工作。

def additon(number1, number2):
    return (number1 + number2)

def subtraction(number1, number2):
    return(number1 - number2)

def multiplication(number1, number2):
    return(number1 * number2)

def division(number1, number2):
    return(number1 / number2)

def modulus(number1, number2):
    return(number1 % number2)

x = True
while (x):
    print("MENU")
    print("1. Add")
    print("2. Subtract")
    print("3. Multiply")
    print("4. Divide")
    print("5. Modulous")

    menu = input("Enter your choice: ")
    if int(menu) == 1:
        answer1 = additon(number1=int(input("Enter first number: ")),
                          number2=int(input("Enter second number: ")))
        print("Result:", answer1)

    elif int(menu) == 2:
        answer2 = subtraction(number1=int(input("Enter first number: ")),
                              number2=int(input("Enter second number: ")))
        print("Result: ", answer2)

    elif int(menu) == 3:
        answer3 = multiplication(number1=int(input("Enter first number: ")),
                                 number2=int(input("Enter second number: ")))
        print("Result: ", answer3)


    elif int(menu) == 4:
        answer4 = division(number1=int(input("Enter first number: ")),
                           number2=int(input("Enter second number: ")))
        print("Result: ", answer4)


    elif int(menu) == 5:
        answer5 = modulus(number1=int(input("Enter first number: ")),
                          number2=int(input("Enter second number: ")))
        print("Result: ", answer5)

    elif int(menu) < 1 or int(menu) > 5:
        print("Not a valid option")

    go_again = input("Would you like to go again (y/n): ")
    if (go_again.lower()=="n"):
        x = False
    else:
        continue

已经接受了一个答案,但我还是会把它扔在那里。

这种练习非常适合 table-driven 方法。

这些操作很简单,因此与其定义离散函数,lambda 就足够了

定义一个字典,我们在其中查找并验证用户的选项。

获取用户输入并执行完整性检查。

我们最终只进行了 2 项条件检查 - 其中一项仅与退出 [潜在] 无限循环有关。

CONTROL = {'1': lambda x, y: x + y,
           '2': lambda x, y: x - y,
           '3': lambda x, y: x * y,
           '4': lambda x, y: x / y,
           '5': lambda x, y: x % y}

while True:
    print("MENU")
    print("1. Add")
    print("2. Subtract")
    print("3. Multiply")
    print("4. Divide")
    print("5. Modulus")
    option = input('Select an option or q to quit: ')
    if option and option in 'qQ':
        break
    if option in CONTROL:
        x = input('Input X: ')
        y = input('Input Y: ')
        try:
            result = CONTROL[option](int(x), int(y))
            print(f'Result={result}')
        except ValueError:
            print('Integer values only please')
        except ZeroDivisionError:
            print("Can't divide by zero")
    else:
        print('Invalid option')
    print()