- 通过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
修改后: