- 通过python程序编写excel表格中的数据,在计算数值时出现数值类型错误:
TypeError: can't multiply sequence by non-int of type 'float'
问题分析:
- 读取的Excel文件中的单元格数据,读取的数值有可能不是数值类型,而是含有数值的序列 [元组/列表],也有可能含有空值,需要分别进行判断
解决办法:
- 对数据类型进行检查和转换,添加 isinstance() ,该函数用于检查一个对象是否是一个已知的类型。它返回一个布尔值(True或False)
# 将字符串转换为float,如果失败则设为0if isinstance(normal_score, str):try:normal_score = float(normal_score)except ValueError:normal_score = 0elif normal_score is None:normal_score = 0if isinstance(final_score, str):try:final_score = float(final_score)except ValueError:final_score = 0elif 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}'].valuefinal_score = ws[f'{final_column}{row}'].valuedefer_status = ws[f'{defer_column}{row}'].value# 计算数值total_score = normal_score * 0.3 + final_score * 0.7
修改后: