python - 当用户在 Python 中请求时,我如何调用整个函数?
问题描述
我是 Python 新手,我试图弄清楚如果用户输入“Y”,如何创建和 if 循环以重新启动整个函数(在本例中为 programOutput 函数)。此外,如果我对 Class 和 def 的使用完全错误,那么我欢迎提供帮助和建设性的批评。谢谢!
import math
class userEntry:
userName = input("Enter Customer Name: ")
userQuantityPurchased = int(input("Enter Quantity Purchased: "))
userPrice = int(input("Enter Price per Unit: "))
class taxCalculator:
stateTax = .09
countyTax = .05
discountRate = .1
salesAmount = float(str(userEntry.userQuantityPurchased * userEntry.userPrice))
stateCalculator = str(salesAmount * stateTax)
countyCalculator = str(salesAmount * countyTax)
totalTax = sum = float(stateCalculator) + float(countyCalculator)
grossSales = sum = float(salesAmount) - float(totalTax)
discount = sum = float(discountRate) * float(salesAmount)
netSales = sum = float(grossSales) - float(discount)
programOutput()
def programOutput():
print("---------------------------------------")
print("Here is your Net Sale!")
print("---------------------------------------")
print("Customer Name: ", userEntry.userName)
print("Sales Amount: ", "$", taxCalculator.salesAmount)
print("Total Taxes: ", "$", taxCalculator.totalTax)
print("---------------------------------------")
print("\n")
print("Gross Sales: ", "$", taxCalculator.grossSales)
print("Discount: ", "$", taxCalculator.discount)
print("\n")
print("---------------------------------------")
print("\n")
print("Net Sales: ", "$", taxCalculator.netSales)
print("---------------------------------------")
print("---------------------------------------")
print("\n")
print("Thank you for your business!")
print("\n")
nextSale = input("Do you want to process another sale? (Y/N): ")
if nextSale == 'Y':
programOutput()
解决方案
使用循环,而不是递归。
而且您需要将要求输入的代码放入循环中,否则您将继续打印相同的值。
def programOutput():
print("---------------------------------------")
print("Here is your Net Sale!")
print("---------------------------------------")
print("Customer Name: ", userName)
print("Sales Amount: ", "$", salesAmount)
print("Total Taxes: ", "$", totalTax)
print("---------------------------------------")
print("\n")
print("Gross Sales: ", "$", grossSales)
print("Discount: ", "$", discount)
print("\n")
print("---------------------------------------")
print("\n")
print("Net Sales: ", "$", netSales)
print("---------------------------------------")
print("---------------------------------------")
print("\n")
print("Thank you for your business!")
print("\n")
while True:
userName = input("Enter Customer Name: ")
userQuantityPurchased = int(input("Enter Quantity Purchased: "))
userPrice = int(input("Enter Price per Unit: "))
stateTax = .09
countyTax = .05
discountRate = .1
salesAmount = float(str(userEntry.userQuantityPurchased * userEntry.userPrice))
stateCalculator = str(salesAmount * stateTax)
countyCalculator = str(salesAmount * countyTax)
totalTax = sum = float(stateCalculator) + float(countyCalculator)
grossSales = sum = float(salesAmount) - float(totalTax)
discount = sum = float(discountRate) * float(salesAmount)
netSales = sum = float(grossSales) - float(discount)
programOutput()
nextSale = input("Do you want to process another sale? (Y/N): ")
if nextSale.lower() == 'n':
break
不需要类,只需设置普通变量即可。或者您可以定义返回值的函数,并在循环中分配它们。
推荐阅读
- sql-server - TSQL 比较数据并返回不同行的结果
- c++ - 两个不同的键可以在Redis C++中存储相同的数据而不重复吗
- android - 如何在格式化字符串资源中使用整数?
- python - OSError:SavedModel 文件不存在于:sh./model/traffic_sign.model/{saved_model.pbtxt|saved_model.pb}
- html - 关键帧动画在其他方向移动时没有过渡(纯 CSS)
- vue.js - 清除过滤器时,剑道时间选择器过滤器仅显示上午 12:00
- c# - 我如何以交替顺序订购两个不同对象列表的 XMLArray 项?
- mongodb - 春季启动查询以单独从子文档数组中的字段中获取最大值
- c++ - “可以将问题域中的对象映射到程序中的对象”是什么意思?
- python - 如何使用 pandas 分配方法优化数据预处理