Python报错TypeError: unsupported operand type(s) for *: 'function' and 'int'如何解决
错误原因
你在main函数中为midterm、final两个变量赋值时,没有给对应的取值函数添加调用括号(),导致赋值给变量的是函数对象本身,而非函数执行后返回的成绩数值。后续semesterGrade函数执行final*2运算时,自然就触发了「函数与整数不能做乘法运算」的类型错误。
修复方案
仅需修改main函数内的两行赋值代码,给midtermgra、finalgra添加调用括号即可,修正后完整代码如下:
def main(): # 给函数加()表示执行调用,拿到返回的成绩数值 midterm = midtermgra() final = finalgra() semgra = semesterGrade(midterm, final) category(semgra) def midtermgra(): midterm = eval(input('Please enter your midterm grade: ')) return midterm def finalgra(): final = eval(input('Please enter your final grade: ')) return final def semesterGrade(midterm, final): semgra = (midterm + (final * 2)) / 3 return semgra def category(semgra): if semgra < 60: print('Semester grade: F ') elif semgra < 70: print('Semester grade: D ') elif semgra < 80: print('Semester grade: C ') elif semgra < 90: print('Semester grade: B ') else: print('Semester grade: A ') main()
额外优化建议
原代码中使用eval()处理用户输入存在安全风险,若用户输入可执行的恶意代码会被直接运行,可以替换为float()做类型转换,修改后示例:midterm = float(input('Please enter your midterm grade: '))
内容的提问来源于stack exchange,提问作者Sophia Tze
相关产品推荐
相关产品推荐

