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-7(对应周一到周日)。
内容的提问来源于stack exchange,提问作者Utkarsh gaur
相关产品推荐
相关产品推荐

