14

我正在创建一个基本程序,它将使用 GUI 来获取商品的价格,然后如果初始价格低于 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`

为什么我会收到此错误?

4

2 回答 2

21

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

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

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

于 2013-06-01T14:31:21.013 回答
0

这部分 :

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

要求 python 调用这个字符串:

"Your new price is: $"

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

TypeError: 'str' object is not callable

于 2020-09-17T14:15:30.493 回答