2013-03-24 6 views
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 
>>> 
+2

"함수에서 호출 할 수있는 문자열을 갖게하십시오"는 것은 무엇을 의미합니까? – yehe

+0

무슨 뜻인지 정말로 모르겠다. 어쩌면 질문을 더 명확하게 설명해야합니다. 입력 및 출력 샘플을 제공 할 수 있다면 더 좋습니다. – zhangyangyu

+0

monster_name은 괴물의 이름이 될 것이므로 문자열이 될 것입니다.이 이름을 함수 몬스터의 인수로 사용하고 싶습니다. 하지만 "str 객체를 호출 할 수 없습니다"오류가 발생했습니다 – user1985351

답변

0

문제가있어서 input이다. 대신 raw_input을 사용해야합니다. 입력은 문자열을 평가하려고 시도하지만 raw_input은 사용자가 입력 한 문자열을 변수에 넣습니다.

+0

raw_input을 더 이상 사용하지 않으므로 3.3을 사용하고 있습니다. – user1985351

+0

오류는 파이썬 2.x를 사용하고 있다고 말합니다. 파이썬 3.x를 사용하고 있습니까? – diegueus9

+0

확실합니다. 3.3.0은 어디 에나있다. – user1985351

0

입력 대신 값을 읽으려면 python 내장 함수 raw_input을 바꾸어야합니다. input function here의 설명서를 참조하십시오. 업데이트 된 코드는 다음과 같습니다.

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) 
+0

나는 할 수 없다. 나는 3.3을 사용 중이며 raw_input은 3.3에서 더 이상 사용되지 않습니다. 다른 녀석도 같은 생각을했습니다. – user1985351

관련 문제