我对这个python程序迷路了

2024-09-29 23:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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时执行一些操作


Tags: 代码importreturnifdeflineargslists
1条回答
网友
1楼 · 发布于 2024-09-29 23:28:42

在我看来,您误解了*args在函数声明中的作用。你知道吗

当您编写def ExecuteCode(*args):时,您希望允许ExecuteCode使用数量可变的参数进行调用。例如,其他代码可以调用ExecuteCode("foo", "bar", "baz")(三个参数)或ExecuteCode()(零参数)。函数中的args变量将是这些参数值的列表(对于我的两个示例调用,["foo", "bar", "baz"][])。你知道吗

在代码中,使用一个参数ExecuteCode(command)调用函数。如果command是列表['hi'],那么在ExecuteCode内部,args将是[['hi']],因为它总是将参数放在一个列表中,因为可能有几个参数。你知道吗

您可能不需要在这里使用*args。相反,只需使用:

def ExecuteCode(lists):
    if lists[0] == "hi":
        ...

请注意,您的代码还存在一些其他样式问题(这不会阻止它运行,但会使它变得更加复杂或混乱)。一个问题是命名。一个常见的Python约定是对大多数函数使用lowercase_names_with_underscores,对类保留CapitalizedNames。另一个问题是挑选清楚自己工作的名字。ExecuteCode中的lists变量就是一个例子。在您当前的错误代码中,它是一个列表列表,因此名称可能有一定意义(如果这是您想要的),但是如果您按照我上面的建议将其更改为字符串列表,您应该将其重命名为其他名称,因为它不再是列表列表。你知道吗

相关问题 更多 >

    热门问题