Python for循环调用input报参数数量错误如何修复
问题根因
input() 是Python内置函数,仅支持传入1个字符串类型的提示文本参数,你在循环内调用时分别传入了"Assignment"、i + 1、"max?"三个独立参数,因此触发「input expected at most 1 argument, got 3」报错。
修复方案
将三个分散的参数拼接为一个完整的提示字符串后再传入input()即可,推荐使用f-string语法实现字符串拼接,写法简洁可读性高。
另外你当前代码还有两处需要调整的细节:
- 收集作业实际得分的
input提示语和满分提示语重复,需要修改区分 - 注释存在拼写错误、逻辑描述偏差可同步修正
修复后完整代码
# 定义作业分数统计函数 def home_work(): # 询问作业占总分数的权重 weight = int(input("Weight (0-100)? ")) # 询问作业数量,确定循环次数 assignment_count = int(input("Number of assignments? ")) # 循环收集每份作业的得分和满分 for i in range(assignment_count): # 提示用户输入当前作业的实际得分 assignment_score = int(input(f"Assignment {i + 1} score? ")) # 提示用户输入当前作业的满分 max_score = int(input(f"Assignment {i + 1} max? ")) # 调用函数 home_work()
如果你需要兼容更早版本的Python,也可以用+做字符串拼接,替换对应的input行即可:
assignment_score = int(input("Assignment " + str(i + 1) + " score? ")) max_score = int(input("Assignment " + str(i + 1) + " max? "))
内容的提问来源于stack exchange,提问作者Michael Trujillo
相关产品推荐
相关产品推荐

