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

Python函数传参与星期查询问题:无输入提示错误排查

问题排查:输入数字返回星期的程序无输入请求

首先,先把你贴的代码放出来方便分析:

def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    num = input ("Please enter the number: ")
    if int(num) <= 7:
        print(return_day( days[num - 1]))
    else:
        print("None")

咱们一步步拆解问题:

  • 最核心的问题:你只定义了函数,但从来没调用它! 程序运行后,Python只会加载这个函数的定义,不会主动执行函数内部的代码,所以自然不会弹出输入请求。你得在函数定义完之后加一行调用代码,比如return_day()才能触发执行。

  • 函数内部的递归逻辑完全错误:你在print(return_day(days[num - 1]))这里调用了函数本身,但days[num-1]是字符串(比如"Tuesday"),而你的函数参数num需要的是数字,这会直接触发类型错误;而且就算参数合法,这个递归也会无限循环,完全没必要这么做。

  • 类型转换的小bug:num = input(...)得到的是字符串,你后面用num - 1的时候,虽然前面转了int(num),但num本身还是字符串类型,会触发运算错误,得把转换后的数字存成新变量再用。

给你修正后的代码,逻辑更清晰也能正常运行:

def return_day(num):
    days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
    # 明确判断数字在1-7的有效范围内
    if 1 <= num <=7:
        return days[num - 1]
    else:
        return "None"

# 把输入逻辑放到函数外面,职责拆分更合理
try:
    user_input = int(input("Please enter the number: "))
    print(return_day(user_input))
except ValueError:
    print("请输入有效的数字哦!")

修改点说明:

  1. 输入逻辑移到函数外,让函数只负责"根据数字返回星期"这一件事,逻辑更清晰;
  2. 增加了异常处理,防止用户输入非数字内容导致程序崩溃;
  3. 去掉了错误的递归调用,直接返回结果再打印;
  4. 明确了星期数字的有效范围是1-7(对应周一到周日)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:15:08