You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改函数:调用后主动获取文件名、minK及maxK参数并执行逻辑

解决方案

我完全明白你的需求——把原本硬传参数的函数调用,改成先和用户交互获取输入,再执行核心逻辑对吧?下面我给你捋清楚调整思路,附带上Python的示例代码,你可以参考着改自己的现有代码:

核心调整步骤

  • 第一步:添加交互式输入逻辑:用input()函数依次提示用户输入文件名、minK和maxK,记得把minK/maxK转换成整数类型
  • 第二步:封装核心业务逻辑:把原来读取文件、找最常见子串的代码封装成独立函数,接收文件名、minK、maxK作为参数,这样复用性更强
  • 第三步:整合并处理异常:给文件读取、输入转换加异常捕获,避免程序直接崩溃

示例代码实现

def find_most_common_substrings(filename, min_k, max_k):
    # 这里放你原本的核心逻辑:读取文件内容、遍历minK到maxK的子串、统计频率
    with open(filename, 'r') as f:
        content = f.read().strip()
    
    substring_counts = {}
    # 遍历所有指定长度的子串
    for k in range(min_k, max_k + 1):
        for i in range(len(content) - k + 1):
            substr = content[i:i+k]
            substring_counts[substr] = substring_counts.get(substr, 0) + 1
    
    # 找出出现次数最多的子串(如果有多个并列的话可以都返回)
    if not substring_counts:
        return None
    max_count = max(substring_counts.values())
    most_common = [substr for substr, count in substring_counts.items() if count == max_count]
    return most_common, max_count

# 交互式入口逻辑
if __name__ == "__main__":
    # 获取文件名
    while True:
        filename = input("请输入待读取的文件名(例如:dna.txt):").strip()
        try:
            # 先尝试打开文件确保存在
            with open(filename, 'r'):
                break
        except FileNotFoundError:
            print(f"错误:文件 {filename} 不存在,请重新输入!")
    
    # 获取minK和maxK,确保是合法整数且minK<=maxK
    while True:
        try:
            min_k = int(input("请输入minK的值:").strip())
            max_k = int(input("请输入maxK的值:").strip())
            if min_k > max_k:
                print("错误:minK不能大于maxK,请重新输入!")
                continue
            break
        except ValueError:
            print("错误:请输入有效的整数!")
    
    # 执行核心逻辑并输出结果
    result = find_most_common_substrings(filename, min_k, max_k)
    if result:
        most_common, count = result
        print(f"在长度 {min_k} 到 {max_k} 范围内,最常见的子串是:")
        for substr in most_common:
            print(f"- {substr},出现次数:{count}")
    else:
        print("文件内容为空,无法找到子串!")

关键注意点

  • 输入合法性校验:一定要处理用户输入的异常情况,比如文件名错误、输入非整数的minK/maxK,不然程序很容易报错
  • 核心逻辑复用:把统计子串的代码封装成函数,以后不管是交互式调用还是批量处理都能直接用
  • 多结果处理:如果有多个子串出现次数相同且都是最多的,要把它们都返回,避免只返回第一个找到的

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:15:26