尝试通过用户输入调用函数

0 投票
2 回答
821 浏览
提问于 2025-04-17 20:06
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 个回答

0

你需要把Python内置的函数raw_input替换成input,这样才能读取值。具体的用法可以参考这里的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)
0

问题出在方法 input 上。你应该用 raw_input 来代替。因为 input 会尝试去计算用户输入的内容,而 raw_input 只是把用户写的字符串放到变量里。

撰写回答