【问题标题】:How to solve "TypeError: can only concatenate str (not 'float') to str" with this particular code?如何使用此特定代码解决“TypeError:只能将str(不是'float')连接到str”?
【发布时间】:2021-03-22 09:48:07
【问题描述】:

我是编码/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)

【问题讨论】:

  • print("Sales Amount:", taxCalculator.salesAmount)。下一行也一样。
  • 欢迎来到 SO!查看tour。在这种情况下,问题很明显,但以后请提供minimal reproducible example,包括您如何使用这些类。如果您想了解更多提示,请参阅How to Ask

标签: python math typeerror


【解决方案1】:

您需要将 float 转换为 str:

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

但实际上,让print 为您做这件事以及加入会更容易:

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

附:类的这种用法非常不习惯,我建议避免使用它,除非它是类或其他东西所必需的。您的代码还有其他问题,我不会深入探讨。

【讨论】:

  • 非常感谢。答案就在我面前,但谢天谢地,需要像你这样的人才能让它显而易见,哈哈。欣赏它。
  • @Steven Hindsight 是 20/20,哈哈。欢迎! :)
  • 另外,如果您想评价我的代码,我也将不胜感激。我正在努力学习。
  • @Steven 嗯,最大的问题是mathstateCalculator 没有被使用,stateCalculator 不应该被转换成str。还有一些更微妙的问题,比如错误的类名大小写,以及无意义的转换float(str()),因为它已经是一个 int。如果您需要更多解释,您可以在Code Review 和 lmk 上发帖,但您需要提供完整的代码。
【解决方案2】:

我猜你来自 java/C 背景,可以回答你的问题。您正在尝试将 str 类型与浮点数连接起来。此外,首先将销售额设为 str ,然后再设为 float 是多余的,并且不需要在此处导入数学库。我为您制作了一个示例类,其中包含一些遵循“Python 之禅”和 PEP 8 指南的常见命名约定。

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

【讨论】:

  • 感谢您的详尽解释!是的,你猜对了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 2020-08-19
  • 1970-01-01
相关资源
最近更新 更多