【问题标题】:How do I fix this "TypeError: 'str' object is not callable" error?如何修复此“TypeError:'str' object is not callable”错误?
【发布时间】:2013-05-28 05:53:36
【问题描述】:

我正在创建一个基本程序,该程序将使用 GUI 来获取商品的价格,然后如果初始价格低于 10,则减价 10%,如果初始价格低于 10,则减价 20%。初始价格大于十:

import easygui
price=easygui.enterbox("What is the price of the item?")
if float(price) < 10:
    easygui.msgbox("Your new price is: $"(float(price) * 0.1))
elif float(price) > 10:
    easygui.msgbox("Your new price is: $"(float(price) * 0.2))

我一直收到这个错误:

easygui.msgbox("Your new price is: $"(float(price) * 0.1))
TypeError: 'str' object is not callable`

为什么会出现这个错误?

【问题讨论】:

    标签: python string user-interface comparison callable


    【解决方案1】:

    这部分:

    "Your new price is: $"(float(price)

    要求python调用这个字符串:

    "Your new price is: $"

    就像你想要一个函数一样: function( some_args) 这总是会触发错误:

    TypeError: 'str' object is not callable

    【讨论】:

      【解决方案2】:

      您正在尝试将字符串用作函数:

      "Your new price is: $"(float(price) * 0.1)
      

      因为字符串文字和 (..) 括号之间没有任何内容,Python 将其解释为将字符串视为可调用并使用一个参数调用它的指令:

      >>> "Hello World!"(42)
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: 'str' object is not callable
      

      您似乎忘记连接(并致电str()):

      easygui.msgbox("Your new price is: $" + str(float(price) * 0.1))
      

      下一行也需要修复:

      easygui.msgbox("Your new price is: $" + str(float(price) * 0.2))
      

      或者,使用带有str.format()的字符串格式:

      easygui.msgbox("Your new price is: ${:.2f}".format(float(price) * 0.1))
      easygui.msgbox("Your new price is: ${:.2f}".format(float(price) * 0.2))
      

      {:02.2f} 将替换为您的价格计算,将浮点值格式化为带 2 位小数的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-26
        • 2011-04-26
        • 2017-01-23
        • 2021-02-03
        • 2020-12-15
        • 2016-01-01
        • 1970-01-01
        相关资源
        最近更新 更多