Python新手给marks变量赋值float出现语法错误,求原因及解决方法
报错原因及修复方案
触发当前SyntaxError的直接原因
Python是动态类型语言,不需要在变量名前提前声明变量类型,你写的float marks = []是C、Java等静态类型语言的语法,在Python中属于非法写法,因此直接触发语法报错。
代码中其余待修复的问题
- 循环范围错误:
range(0,4)只会执行4次循环,无法完成5门课程的成绩录入,应改为range(5) - 输入值未做类型转换:
input()默认返回字符串类型,不手动转为float的话,后续执行sum(marks)时会触发类型不兼容报错 - 求和逻辑冗余:
agg = sum(marks)放在循环内部会每次新增成绩后重复计算总和,放在循环结束后执行即可 - 缺失百分比计算逻辑:原代码直接把5门课总分作为百分比输出,逻辑错误。假设每门课满分为100,正确的百分比计算规则为
百分比 = 5门课总分 / 500 * 100 = 总分 / 5 - 格式化字符串语法错误:最后打印行的格式化符号缺失,应在占位符和变量之间加
%,即"%0.2f" % 变量 - 拼写错误:
perentage应为percentage
修复后的完整代码
print("enter marks of student obtained in five diff subjects") marks = [] for i in range(5): # 读取输入直接转为float类型 n = float(input()) marks.append(n) # 循环结束后统一计算总分和百分比 total_score = sum(marks) percentage = total_score / 5 print("percentage of student is %0.2f " % percentage)
内容的提问来源于stack exchange,提问作者viru
相关产品推荐
相关产品推荐

