Python循环输入触发TypeError:如何实现月份降雨量输入存储?
问题分析与修复方案
核心错误原因
触发TypeError是因为**input()函数仅接受单个字符串参数**,但你用逗号传入了多个参数("Enter rainfall amount for ", monthsList[x], ": "),违反了函数调用规则。
另外代码还有两个次要问题:
range(13)会生成0-12共13个索引,但monthsList只有12个月份,索引12会触发索引越界错误if x == 13: break完全无效,因为range(13)的x最大值为12,永远不会等于13
修复后的代码
monthsList = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] # 修正"Augist"拼写错误 promptList = [] # 循环12次,对应12个月份 for x in range(12): # 用f-string拼接提示文本,传给input()单个字符串参数 num = float(input(f"Enter rainfall amount for {monthsList[x]}: ")) promptList.append(num) # 所有输入完成后统一打印列表,避免循环内重复输出 print(promptList)
关键修改点
- 用f-string(
f"...")将提示文本与月份名拼接成单个字符串,满足input()的参数要求 - 将
range(13)改为range(12),匹配月份列表长度,避免索引越界 - 移除无效的
break判断,把print(promptList)移到循环外,优化输出逻辑 - 修正了
monthsList中"Augist"的拼写错误(正确为"August")
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

