TypeError: can‘t multiply sequence by non-int of type ‘float‘

  • 通过python程序编写excel表格中的数据,在计算数值时出现数值类型错误:

TypeError: can't multiply sequence by non-int of type 'float'


 问题分析:

  • 读取的Excel文件中的单元格数据,读取的数值有可能不是数值类型,而是含有数值的序列 [元组/列表],也有可能含有空值,需要分别进行判断

解决办法:

  • 对数据类型进行检查和转换,添加 isinstance() ,该函数用于检查一个对象是否是一个已知的类型。它返回一个布尔值(True或False)
 # 将字符串转换为float,如果失败则设为0

    if isinstance(normal_score, str):
        try:
            normal_score = float(normal_score)
        except ValueError:
            normal_score = 0
    elif normal_score is None:
        normal_score = 0

    if isinstance(final_score, str):
        try:
            final_score = float(final_score)
        except ValueError:
            final_score = 0
    elif final_score is None:
        final_score = 0

原代码:

max_row = 53 # 最大行数

# 遍历所有行,计算总评并写入
for row in range(6, max_row + 1):  # 从第六行开始遍历
    normal_score = ws[f'{normal_column}{row}'].value
    final_score = ws[f'{final_column}{row}'].value
    defer_status = ws[f'{defer_column}{row}'].value

    # 计算数值
    total_score = normal_score * 0.3 + final_score * 0.7

修改后: