GUIを使用してアイテムの価格を取得し、初期価格が10未満の場合は価格の10%を引き、初期価格が10%の場合は価格の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`
このエラーが発生するのはなぜですか?
文字列を関数として使用しようとしています:
_"Your new price is: $"(float(price) * 0.1)
_
文字列リテラルと_(..)
_括弧の間に何もないため、Pythonは、文字列を呼び出し可能として扱い、1つの引数で呼び出す命令として解釈します。
_>>> "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桁の値としてフォーマットします。