1

私は現在、ユーザーがサーバーに接続し、互いに取引してお金を稼ぐなどの取引ゲームを書いています。

if(input.lower() == 'sell'):
        sMaterial = raw_input('Material: ')
        if(sMaterial.lower() == 'gold'):
            sAmount = int(input('Enter amount: '))
            if(gold >= sAmount):
                mon = mon + (100 * sAmount)
            else:
                print 'You do not have enough', sMaterial

エラーがスローされます

> sell
Material: gold
Traceback (most recent call last):
  File "Test.py", line 119, in <module>
    sAmount = int(input('Enter amount: '))
TypeError: 'str' object is not callable

Geany 開発環境で Linux、Python バージョン 2.7.3 を使用しています。前もって感謝します。

4

3 に答える 3

10

この行:

if(input.lower() == 'sell'):

inputある時点で名前を文字列にバインドしたに違いないことを教えてくれます。だからあなたが電話するとき

sAmount = int(input('Enter amount: '))

'Enter amount: '引数を文字列 に渡そうとしているため、次のようinputになりますTypeError: 'str' object is not callable。Python 2 を使用しているように見えるので、おそらくraw_inputとにかく使用する必要がありますが、これが組み込みの名前を再バインドしないもう 1 つの理由です。

于 2012-12-22T03:20:43.840 に答える
3

input一部のデータを保持する変数で関数を上書きしました。あなたがしたどこかinput = ...。(コードの最初の行で、実行していることがわかりますinput.lower()。) 解決策は、これを行うコードの部分を変更することです。組み込み関数や型と同じ名前を変数に付けないでください。

于 2012-12-22T03:21:12.807 に答える
1

やったほうがいい

sAmount = int(raw_input('Enter amount: '))

それ以外の

sAmount = int(input('Enter amount: '))

そして、あなたもどこかで例外処理をしたいかもしれません:)

于 2012-12-22T03:20:47.033 に答える