import sys
import pathlib
import os
def GetAndSplitCommand(line, file):
if line is 1:
line = 0
f=open(file)
lines=f.readlines()
unsplit=lines[line]
split=unsplit.split()
return split
def ExecuteCode(*args):
lists = [item for item in args]
print(lists)
parameters = args
if lists[0] == "hi":
HelloWorld()
return
elif lists[0] == "bye":
GoodbyeWorld()
return
def HelloWorld():
print(" Hello World!")
return
def GoodbyeWorld():
print(" Bye World!")
return
command = GetAndSplitCommand(1, "food.txt")
ExecuteCode(command)
在食品.txt我有一个词“嗨”,所以,用这个代码它应该打印出“你好世界!”,但是它只是打印出[['hi']]。我已经尝试了很多次重新格式化代码,我需要的建议,我需要做什么。你知道吗
另外,这不是缩进问题,stackoverflow只是不适合我的代码。你知道吗
另一个注意事项是,这个程序本质上是用来读取一个文件的行,将行拆分为单独的“参数”,并使用ExecuteCode()函数,在第一个参数是X时执行一些操作
在我看来,您误解了
*args
在函数声明中的作用。你知道吗当您编写
def ExecuteCode(*args):
时,您希望允许ExecuteCode
使用数量可变的参数进行调用。例如,其他代码可以调用ExecuteCode("foo", "bar", "baz")
(三个参数)或ExecuteCode()
(零参数)。函数中的args
变量将是这些参数值的列表(对于我的两个示例调用,["foo", "bar", "baz"]
或[]
)。你知道吗在代码中,使用一个参数
ExecuteCode(command)
调用函数。如果command
是列表['hi']
,那么在ExecuteCode
内部,args
将是[['hi']]
,因为它总是将参数放在一个列表中,因为可能有几个参数。你知道吗您可能不需要在这里使用
*args
。相反,只需使用:请注意,您的代码还存在一些其他样式问题(这不会阻止它运行,但会使它变得更加复杂或混乱)。一个问题是命名。一个常见的Python约定是对大多数函数使用
lowercase_names_with_underscores
,对类保留CapitalizedNames
。另一个问题是挑选清楚自己工作的名字。ExecuteCode
中的lists
变量就是一个例子。在您当前的错误代码中,它是一个列表列表,因此名称可能有一定意义(如果这是您想要的),但是如果您按照我上面的建议将其更改为字符串列表,您应该将其重命名为其他名称,因为它不再是列表列表。你知道吗相关问题 更多 >
编程相关推荐