首页 > 解决方案 > 带有循环退出和重新启动的计算器程序

问题描述

我有一个计算器程序,我正在尝试

  1. 弄清楚如何让它循环回到开头

  2. 当您选择退出选项时,它会在退出之前继续询问两个数字,我似乎无法弄清楚如何绕过它并退出。

我已经让计算器工作了。如果您选择一个操作,就无法让它退出或正确循环

    def add(num1, num2):
        return num1 + num2
    def subtract(num1, num2):
        return num1 - num2
    def multiply(num1, num2):
        return num1 * num2
    def divide(num1, num2):
        return num1 / num2
    def exponent(num1, num2):
        return num1 ** num2
    def hypotenuse(num1, num2):
        return sqrt (num1**2 + num2**2)
     def square_root(num1, num2):
        return sqrt (num1 + num2)



    print("A for Addition")
    print("B for Subtraction")
    print("C for Multiplication")
    print("D for Division")
    print("E for Expopent")
    print("F for Hypotenuse")
    print("G for Square root of sum of two numbers")
    print("Q to Quit program")

    operation = input("Select operation you would like to perform :")

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

    if operation in ['A','a']:
       print(num1,"+",num2,"=", add(num1, num2))
    elif operation in ['B', 'b']:
       print(num1,"-",num2,"=", subtract(num1, num2))
    elif operation in ['C', 'c']:
       print(num1,"*",num2,"=", multiply(num1, num2))
    elif operation in ['D', 'd']:
       print(num1,"/",num2,"=", divide(num1, num2))
    elif operation in ['E', 'e']:
       print(num1, "^", num2,"=", exponent(num1, num2))
    elif operation in ['F', 'f']:
        print("Hypotenuse of", num1,"and", num2,  "=", hypotenuse(num1, num2))
    elif operation in ['G', 'g']:
        print("Square root of the sum of", num1, "and", num2, "=", square_root(num1, num2))
    while operation in ['Q', 'q']: 
            exit()

所以所有的操作都有效。我只想知道一旦操作完成如何让它循环回到开头。至于退出,我如何绕过它询问两个数字并退出?

标签: pythonpython-3.x

解决方案


以下应该解决您的问题。我还mathsqrt.

import math

def add(num1, num2):
    return num1 + num2
def subtract(num1, num2):
    return num1 - num2
def multiply(num1, num2):
    return num1 * num2
def divide(num1, num2):
    return num1 / num2
def exponent(num1, num2):
    return num1 ** num2
def hypotenuse(num1, num2):
    return math.sqrt(num1**2 + num2**2)
def square_root(num1, num2):
    return math.sqrt(num1 + num2)

print("A for Addition")
print("B for Subtraction")
print("C for Multiplication")
print("D for Division")
print("E for Expopent")
print("F for Hypotenuse")
print("G for Square root of sum of two numbers")
print("Q to Quit program")

operation = input("Select operation you would like to perform :").lower()

while operation not in ['q']:
    num1 = int(input("Enter first number: "))
    num2 = int(input("Enter second number: "))

    if operation in 'a':
        print(num1,"+",num2,"=", add(num1, num2))
    elif operation in 'b':
        print(num1,"-",num2,"=", subtract(num1, num2))
    elif operation in 'c':
        print(num1,"*",num2,"=", multiply(num1, num2))
    elif operation in 'd':
        print(num1,"/",num2,"=", divide(num1, num2))
    elif operation in 'e':
        print(num1, "^", num2,"=", exponent(num1, num2))
    elif operation in 'f':
        print("Hypotenuse of", num1,"and", num2,  "=", hypotenuse(num1, num2))
    elif operation in 'g':
        print("Square root of the sum of", num1, "and", num2, "=", square_root(num1, num2))
    else:
        print('Please choose again')

    operation = input("Select operation you would like to perform :")
else: 
    print('Calculator turning off.')

我对此进行了一些清理,并添加了一个 else 语句,如果收到无效输入,则该语句会循环回来。


推荐阅读