我需要制作一个表格,从文本文件中抽取一个或多个人在各种游戏中的名字和分数,然后找出每个人的分数的平均值,最小值和最大值并显示它们。
编辑 - 这是我目前的代码:
while name!='':
floor=text_file.readline().rstrip()
rings=text_file.readline().rstrip()
p_bars=text_file.readline().rstrip()
p_horse=text_file.readline().rstrip()
h_bar=text_file.readline().rstrip()
floor_int=int(floor)
rings_int=int(rings)
p_bars_int=int(p_bars)
p_horse_int=int(p_horse)
h_bar_int=int(h_bar)
score_sum=floor_int+rings_int+p_bars_int+p_horse_int+h_bar_int
avg=score_sum/5
我如何使用具有数字的行进行数学运算并排除具有名称的行?
编辑:运行该代码给了我这个: TypeError:无法将'float'对象隐式转换为str
任何想法?
答案 0 :(得分:1)
如果您的号码是十进制数字,您可以这样做:
if line.isdigit():
my_number = int(line)
答案 1 :(得分:0)
假设'rings'是一个有数字的行,你可以通过创建int或float对象来添加所有这些,例如:
rings=rings.rstrip('\n')
rings_int = int(rings)
sum_of_rings += rings_int
如果一行中有数字和其他文字的混合,请使用正则表达式首先拉出数字部分:
import re
m = re.search('\d+', rings)
if m:
rings_int_str = m.group()
rings_int = int( rings_int_str )
sum_of_rings += rings_int
我使用了很多单独的变量来澄清这一点,但这些步骤可以合并,例如:
sum_of_rings += int( text_file.readline() )
P.S。如果您收到该错误,则可能是在打印语句中,您尝试打印avg而不会以某种方式将其转换为字符串。其中任何一个都有效:
avg=score_sum/5.0
print "%f" % (avg)
print str(avg)