如何解决“TypeError:只能将str(而不是“float”)连接到str”的问题?

2024-09-24 06:20:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉编码/Python,因此非常感谢您的帮助。我想知道如何计算销售税r,但我不知道该怎么做

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
    salesAmount = float(str(userEntry.userQuantityPurchased*userEntry.userPrice))
    stateCalculator = str(salesAmount*stateTax)

class programOutput:
    print("------------------------------")
    print("Here is your Net Sale!")
    print("------------------------------")
    print("Customer Name:  " + userEntry.userName)
    print("Sales Amount: " + taxCalculator.salesAmount)
    print("State Tax: " + taxCalculator.stateTax)

Tags: nameinputusernamecustomerclassintprintenter
2条回答

我猜您来自java/C背景,可以回答您的问题。您正在尝试将str类型与float连接起来。另外,先将销售金额设置为str,然后设置为浮动是多余的,不需要在此处导入数学库。我为您创建了一个示例类,其中包含一些遵循“Python之禅”和PEP8准则的通用命名约定

class SalesTax:
    def __init__(self):
        # class variables
        self.user_name = None
        self.user_quantity_purchased = None
        self.user_price = None
        self.state_tax = None
        self.sales_amount = None
        self.calculated_state = None

    def ask_user(self):
        self.user_name = input("Enter Customer Name: ")
        self.user_quantity_purchased = int(input("Enter Quantity Purchased: "))
        self.user_price = int(input("Enter Price per Unit: "))

    def calculate_tax(self, state_tax: float):
        self.state_tax = state_tax
        self.sales_amount = float(self.user_quantity_purchased * self.user_price) * 
            (1 + self.state_tax)

    def print_result(self):
        print("               ")
        print("Here is your Net Sale!")
        print("               ")

        print("Customer Name:  " + self.user_name)
        print("Sales Amount: " + str(self.sales_amount))
        print("State Tax: " + str(self.state_tax))

example = SalesTax()
example.ask_user()
example.calculate_tax(0.09)
example.print_result()

您需要将float转换为str:

print("Sales Amount: " + str(taxCalculator.salesAmount))

但实际上,让print为您做这件事更容易,同时加入:

print("Customer Name:", userEntry.userName)
print("Sales Amount:", taxCalculator.salesAmount)
print("State Tax:", taxCalculator.stateTax)

另外,类的这种用法是高度非惯用的,我建议避免使用它,除非类或其他东西需要它。你的代码还有其他问题,我不想讨论

相关问题 更多 >