我正在创建一个基本程序,它将使用GUI来获取商品的价格,如果初始价格低于10,则从价格中扣除10%,或者如果价格低20%,则需要20%的折扣价。初始价格大于10:
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`
为什么我收到此错误?
答案 0 :(得分:22)
您正在尝试将字符串用作函数:
"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位小数值。
答案 1 :(得分:0)
这部分:
"Your new price is: $"(float(price)
请求python调用此字符串:
"Your new price is: $"
就像一个函数一样:
function( some_args)
总是会触发错误:
TypeError: 'str' object is not callable