python - 带有循环退出和重新启动的计算器程序
问题描述
我有一个计算器程序,我正在尝试
弄清楚如何让它循环回到开头
当您选择退出选项时,它会在退出之前继续询问两个数字,我似乎无法弄清楚如何绕过它并退出。
我已经让计算器工作了。如果您选择一个操作,就无法让它退出或正确循环
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()
所以所有的操作都有效。我只想知道一旦操作完成如何让它循环回到开头。至于退出,我如何绕过它询问两个数字并退出?
解决方案
以下应该解决您的问题。我还math
为sqrt
.
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 语句,如果收到无效输入,则该语句会循环回来。
推荐阅读
- java - 收到 Hikari 池初始化错误
- python-3.x - 如何用装饰器包装 func.__code__.co_filename?
- reactjs - 使用 fetch 循环 - React
- tcl - Tcl exec 的 2>@stdout 是否像 2>@1 一样工作?
- azure - Terraform:将整个资源组移动到新的 Azure 订阅
- java - 检查Java中的两个数字之间是否有3个值
- r - ggplot2 barplot 条颜色无法正确更改
- powershell - 使用 PowerShell 将 Get Thumbnail API 转换为 base64(来自 Microsoft Computer Vision Get Thumbnail API)
- sql - MV 视图与两个带有 blob 列的表连接 - 无法使用从远程表中选择的 LOB 定位器
- r - 识别使用 dfm_subset() 删除的行