我收到错误,但我不知道如何优化代码。
基本上,我要做的是终端应用程序中的伪echo
命令。
while True:
foo = input("~ ")
bar = str
if foo in commands:
eval(foo)()
elif foo == ("echo "+ bar):
print(bar)
else:
print("Command not found")
显然,它不起作用。
有人知道我需要用什么来完成这个项目吗?
答案 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")