0

我需要制作一个表格,从文本文件中提取一个或多个人的姓名和在各种游戏中的得分,然后找到每个人得分的平均值、最小值和最大值并显示它们。

编辑-这是我当前的代码:

    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: Can't convert 'float' object to str implicitly

有任何想法吗?

4

2 回答 2

1

如果您的数字是十进制数字,您可以这样做:

if line.isdigit():
    my_number = int(line)
于 2012-11-16T01:26:23.917 回答
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() )

PS如果您收到该错误,则可能是在您尝试打印 avg 而不以某种方式将其转换为字符串的打印语句中。这些工作中的任何一个:

avg=score_sum/5.0
print "%f" % (avg)
print str(avg)
于 2012-11-16T01:31:50.613 回答