web-dev-qa-db-ja.com

この「TypeError: 'str'オブジェクトは呼び出し不可能です」というエラーを修正するにはどうすればよいですか?

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`

このエラーが発生するのはなぜですか?

12
user2443381

文字列を関数として使用しようとしています:

_"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桁の値としてフォーマットします。

21
Martijn Pieters