【问题标题】:How do I recall an entire function when the user asks for it in Python?当用户在 Python 中请求它时,我如何调用整个函数?
【发布时间】:2021-03-22 11:01:34
【问题描述】:

我是 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()

【问题讨论】:

  • 这是一种非常不寻常的使用类的方式。类通常用于创建类的实例,并且它们具有方法定义。

标签: python function class if-statement while-loop


【解决方案1】:

使用循环,而不是递归。

您需要将要求输入的代码放入循环中,否则您将继续打印相同的值。

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

不需要类,只需设置普通变量即可。或者您可以定义返回值的函数,并在循环中分配它们。

【讨论】:

  • 谢谢!但现在当输入为“Y”时,它只是重新打印“你想处理另一笔销售吗?”问题而不是重新打印整个程序。有什么解决办法吗?
  • 不应该那样做。它应该回到userName = input("Enter Customer Name: ")
猜你喜欢
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
相关资源
最近更新 更多