清風 发表于 2024-1-31 11:22:27

求助2024013101

本帖最后由 清風 于 2024-1-31 11:23 编辑

可能我之前的问题没有表达清楚:

1.我已经 定义了函数

def exclude_rows_and_cols():

..........

return exclude_rules(sheet)


该函数储存的是:{'sheet1': {'排除行': , '排除列': }, 'sheet2': {'排除行': , '排除列': },'sheet3': {'排除行': , '排除列': }, 'sheet4': {'排除行': , '排除列': }}这样的结果。


然后我怎么样才能取出上述储存结果和现有sheet名逐一比对,当sheet同名时自动调用相应的行/列排除规则?

我现在调用函数exclude_rows_and_cols()时总是让我重复输入之前已经录入过的规则,其实我只想调用已经储存好的结果.........

回复请注意python格式


可能我自己死循环了,大家别笑话我~~





FishC 发表于 2024-1-31 11:22:57

不用担心,我们来解决你的问题!你遇到的问题是每次调用`exclude_rows_and_cols()`函数时都需要重新输入规则。这是因为你每次调用函数时都会执行`exclude_rules(sheet)`,导致重新录入规则。

为了解决这个问题,你可以将储存规则的字典定义为函数外部的全局变量,在函数中直接引用该全局变量。这样,每次调用函数时就可以直接使用之前存储的规则,而无需重新输入。

下面是修改后的代码示例:

# 定义全局变量,用于存储规则
rules = {
    'sheet1': {'排除行': , '排除列': },
    'sheet2': {'排除行': , '排除列': },
    'sheet3': {'排除行': , '排除列': },
    'sheet4': {'排除行': , '排除列': }
}

def exclude_rows_and_cols(sheet_name):
    # 直接引用全局变量
    return rules

# 调用函数并传入sheet名
sheet_name = 'sheet1'
result = exclude_rows_and_cols(sheet_name)
print(result)

在调用`exclude_rows_and_cols()`函数时,你可以根据需要传入不同的sheet名。函数会根据传入的sheet名自动调用相应的行/列排除规则,而无需重新输入。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-1-31 11:27:59

FishC 发表于 2024-1-31 11:22
不用担心,我们来解决你的问题!你遇到的问题是每次调用`exclude_rows_and_cols()`函数时都需要重新输入规 ...

我没表达清楚。。。。
{'sheet1': {'排除行': , '排除列': }, 'sheet2': {'排除行': , '排除列': },'sheet3': {'排除行': , '排除列': }, 'sheet4': {'排除行': , '排除列': }}这样的结果就是调用函数才产生的啊,并不是预先设置好的........

FishC 发表于 2024-1-31 11:28:44

清風 发表于 2024-01-31 11:27
我没表达清楚。。。。
{'sheet1': {'排除行': , '排 ...

抱歉,我的理解有误。如果你的规则是在调用函数时动态生成的,而不是事先设置好的,那么你可以将规则作为参数传递给函数。这样,每次调用函数时,你都可以传入不同的规则。下面是修改后的代码示例:

def exclude_rows_and_cols(rules, sheet_name):
    if sheet_name in rules:
      # 获取指定sheet名对应的规则
      sheet_rules = rules
      # 在这里根据规则进行相应的操作
      print(f"正在处理 {sheet_name} 的数据,排除行:{sheet_rules['排除行']},排除列:{sheet_rules['排除列']}")
    else:
      print(f"未找到 {sheet_name} 对应的规则")

# 定义规则字典
rules = {
    'sheet1': {'排除行': , '排除列': ['A', 'B']},
    'sheet2': {'排除行': , '排除列': ['C', 'D']},
    'sheet3': {'排除行': , '排除列': ['E', 'F']},
}

# 调用函数并传入规则和sheet名
sheet_name = 'sheet1'
exclude_rows_and_cols(rules, sheet_name)

在调用`exclude_rows_and_cols()`函数时,你需要传入两个参数:规则字典和要处理的sheet名。函数会根据传入的sheet名在规则字典中查找对应的规则,并进行相应的操作。如果找不到对应的规则,会输出相应的提示信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-1-31 11:29:49

FishC 发表于 2024-1-31 11:28
抱歉,我的理解有误。如果你的规则是在调用函数时动态生成的,而不是事先设置好的,那么你可以将规则作 ...

...........我迷糊了

FishC 发表于 2024-1-31 11:30:03

清風 发表于 2024-01-31 11:29
...........我迷糊了

抱歉让你感到迷糊。如果我还是没有理解你的问题,请尝试提供更具体的信息,我会尽力帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求助2024013101