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

Python while True循环中日期选择函数返回变量值异常怎么修复

问题修复方案

核心原因

你的函数本身可以正确计算并返回最新的start_date和end_date,出现旧值不更新的问题核心是调用函数时没有接收返回值:

  • 函数内部定义的start_date、end_date都是局部变量,函数运行结束后就会自动销毁,不会自动覆盖你外部定义的同名变量
  • 你必须主动把函数return的两个值赋值给外部变量,才能拿到最新的选择结果

其他代码冗余/隐患修复

你的代码还有几个可优化的问题:

  1. return语句已经会直接终止函数运行,后面跟的break完全不会执行,可以直接删掉
  2. 选择3直接退出的分支里,你没有给start_date、end_date赋值,跳出循环后打印这两个变量会直接报「变量未定义」错误,同时函数无返回值,接收的时候会拿到None
  3. 输入非数字的时候,int(input())会直接报错,建议加异常捕获

修正后代码

import pandas as pd
# 假设ManagerAll是你提前定义好的全局变量,这里保留你的原有逻辑
def dateChoices():
    while True:
        print("Menu")
        print("1.All Dates")
        print("2.Selected Dates")
        print("3.Exit")
        # 加异常捕获避免输入非数字报错
        try:
            choice=int(input("Enter your choice:"))
        except ValueError:
            print("请输入有效数字")
            continue

        if choice==1:
            start_date = ManagerAll['Min_Date'][0]  
            end_date = ManagerAll['Max_Date'][0]   
            print("All dates chosen: " + str(start_date))
            return start_date, end_date

        elif choice==2:
            start_date = input('enter a start date (format is YYYY-MM-DD):')
            start_date = pd.to_datetime(start_date, format='%Y-%m-%d')
            end_date = input('enter an end date (format is YYYY-MM-DD):')
            end_date = pd.to_datetime(end_date, format='%Y-%m-%d')
            print('start date chosen is: ' + str(start_date))
            print('end date chosen is: ' + str(end_date))
            return start_date, end_date

        elif choice==3:
            print("退出选择")
            # 可以根据你的需求返回默认值或者None
            return None, None
        else:
            print("Wrong Choice")

正确调用方式

你之前应该是直接调用dateChoices()没有赋值,改成下面的写法就能拿到最新值:

# 把函数返回的两个值赋值给外部变量
start_date, end_date = dateChoices()
# 后续就可以直接使用最新的start_date和end_date了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:07