0

我收到一个错误,我不知道如何改进我的代码。

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

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

显然,它不起作用。

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

4

2 回答 2

2

您创建一个变量bar并将其设置为等于str,这是字符串类型。然后,您尝试将其添加到字符串"echo "中。这显然行不通。你想做什么barbar没有连接到用户输入,所以无论用户输入什么,它都不会改变。

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

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

str并不意味着“任何字符串”;它是所有字符串的类型。您应该阅读Python 教程以熟悉 Python 的基础知识。

于 2012-10-06T05:18:00.120 回答
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")
于 2012-10-06T05:17:48.390 回答