You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:27:03