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

Python2.7程序实现启动选年读CSV及菜单修改年份功能求助

实现方案

首先我们先封装一个公共的年份读取函数,避免启动加载和切换年份时写重复代码,同时增加输入合法性校验,防止用户输入不符合要求的年份。

完整修改后的代码

import pandas as pd

# 公共函数:读取指定年份的CSV返回DataFrame,自带输入校验
def get_df():
    valid_years = ["2000", "2010", "2020"]
    while True:
        year = raw_input("请输入要分析的年份(可选2000/2010/2020):").strip()
        if year in valid_years:
            file_path = "{}.rep.csv".format(year)
            return pd.read_csv(file_path)
        else:
            print("输入的年份不合法,请重新输入!")

# 你的功能函数,注意原来的定义缺少df参数,需要补充,否则调用会报错
def function_1(df):
    # 你的原有逻辑
    pass
def function_2(df):
    pass
def function_3(df):
    pass
def function_4(df):
    pass

# 菜单定义
def menu():
    print("[1]: 1st Function")
    print("[2]: 2nd Function")
    print("[3]: 3rd Function")
    print("[4]: 4th Function")
    print("[6]: Modify the year to analyse")
    print("[0]: Quit Program")

# 主逻辑
if __name__ == "__main__":
    # 启动时先加载初始年份数据
    df = get_df()
    menu()
    option = int(raw_input("Select an option: "))
    while option != 0:
        if option == 1:
            function_1(df)
        elif option == 2:
            function_2(df)
        elif option == 3:
            function_3(df)
        elif option == 4:
            function_4(df)
        elif option == 6:
            # 切换年份,更新df
            df = get_df()
            print("年份已修改,后续功能将使用新年份的数据")
        else:
            print("This option is not valid.")
        menu()
        # 注意原来的input要改成raw_input,Python2中input会执行输入的表达式,容易报错
        option = int(raw_input("Select option: "))
    print("Thanks for using program.")

关键修改说明

  • 新增get_df()公共函数,统一处理年份输入校验和CSV读取逻辑,启动和切换年份都调用该函数
  • 程序启动后第一时间调用get_df()获取初始的DataFrame对象
  • 菜单逻辑中新增选项6的分支,调用get_df()更新全局df变量,后续所有功能调用都会使用新年份的数据
  • 修正了原代码中循环内用input()获取输入的问题,Python2环境下统一用raw_input()获取输入后转类型,避免执行恶意输入的代码

注意事项

你原来的功能函数定义是def function_1():,但调用时传入了df参数,需要把所有功能函数的定义修改为def function_1(df):,否则运行时会抛出参数数量不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:09:04