Python 3.2“TypeError:无法将'type'对象隐式转换为str”

时间:2012-10-06 05:14:44

标签: python string function printing echo

我收到错误,但我不知道如何优化代码。

基本上,我要做的是终端应用程序中的伪echo命令。

while True:
    foo = input("~ ")
    bar = str
    if foo in commands:
        eval(foo)()
    elif foo == ("echo "+ bar):
        print(bar)
    else:
        print("Command not found")

显然,它不起作用。

有人知道我需要用什么来完成这个项目吗?

2 个答案:

答案 0 :(得分:2)

您创建变量bar并将其设置为str,这是字符串类型。然后尝试将其添加到字符串"echo "。这显然是行不通的。你想用bar做什么? bar未与用户输入相关联,因此无论用户输入什么内容,它都不会更改。

如果你想查看输入是否以“echo”开头,然后如果是这样打印其余部分,你可以这样做:

if foo.startswith("echo "):
    print foo[5:]

str并不代表“任何字符串”;它是所有字符串的类型。您应该阅读the Python tutorial以熟悉Python的基础知识。

答案 1 :(得分:0)

此代码可能会给您带来问题:

"echo "+ bar

bar等于str,这是一种数据类型。

以下是我修复代码的方法:

while True:
    command = input("~ ")    # Try to use good variable names

    if command in commands:
        commands[command]()  # Avoid `eval()` as much as possible.
    elif command.startswith('echo '):
        print(command[5:])   # Chops off the first five characters of `foo`
    else:
        print("Command not found")