0
def monster(name):

    with open('yvd.txt') as fd:
        input=[x.strip('|').split('|') for x in fd.readlines()]
        to_search={x[0]:x for x in input}
        print('\n'.join(to_search[name]))
monster_name=input('Input monster to search: ')
monster(monster_name)

わかりましたので、monsterユーザー入力を通じて関数を呼び出そうとしています。検索するモンスターのinput名前を入力するようユーザーに要求します。次に、関数monsterは入力されたモンスターを検索し、それを出力します。しかし、関数内で文字列を呼び出し可能にするにはどうすればよいでしょうか?

出力例:

Input monster to search: Boogie Man
    Traceback (most recent call last):
    File "C:\Users\Trevor\Desktop\yvd_read.py", line 8, in <module>
    monster(monster_name)
    TypeError: 'str' object is not callable
>>> 
4

2 に答える 2

0

inputの代わりに値を読み取るには、Pythonの組み込み関数raw_inputを置き換える必要があります。ここで入力関数のドキュメントを参照してください。更新されたコードは次のとおりです。

def monster(name):

with open('yvd.txt') as fd:
    user_input=[x.strip('|').split('|') for x in fd.readlines()]
    to_search={x[0]:x for x in input}
    print('\n'.join(to_search[name]))

monster_name=raw_input('Input monster to search: ')
monster(monster_name)
于 2013-03-24T03:28:00.053 に答える
0

問題はメソッドの入力です。代わりにraw_inputを使用する必要があります。input は文字列を評価しようとしますが、 raw_input はユーザーが書き込んだ文字列を変数に入れるだけです。

于 2013-03-24T03:20:00.540 に答える