在python中剥离一行之后,如何创建两个单独的列表?

2024-05-19 13:58:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在想我怎么能得到这样的文件:

Bob
120
Joe
300
Jim
175
Jack
205
Jeffrey
155
Billy
135

在那里我输出一个文件,里面只有保龄球手的名字,以及他们是否得到了完美的分数,如果他们高于平均水平还是低于平均水平。 这里是我写的代码,但它不会工作,因为我不能分裂后,换行已被删除。你知道吗

inputFile = open("bowlingscores.txt", "r")
outputFile = open("bowlingaverages.txt", "w")

lines = inputFile.readlines()
for line in lines:
    line = line.strip()
    line = line.split(" ")
    Bowler = line[0]
    Score = line[1]
    def BowlingAverages(bowlingScore):
        average = 0
        if bowlingScore > 0:
            average += bowlingScore/ len(bowlingScore)
        return average
    outputFile.write(Bowler)
    if Score == 300:
        outputFile.write("perfect")
    elif Score > BowlingAverages(Score):
        outputFile.write("above average")
    else:
        outputFile.write("below average")

outputFile.close()

Tags: 文件txtiflineopenwritescorelines
2条回答
lines = inputFile.readlines()
names = lines[0::2]
scores = lines[1::2]

如果您还想剥离/格式化行,则将最后两行替换为

names = [name.strip() for name in lines[0::2]]
scores = [int(score) for score lines[1::2]]

如果分数不是全部整数,您可能需要用float替换上面的int。你知道吗

如果您确信您的文件具有上述顺序

bowler_dict = dict()
for line in open(source.txt).readlines():
    try:
        score = int(line.strip())
        bowler_dict[current] = score
        current = None
    except ValueError:
        current = line.strip()

现在你有一本字典了

{'Jeffrey': 155, 'Jim': 175, 'Billy': 135, 'Joe': 300, 'Bob': 120, 'Jack': 205}

所以让我们算出平均值

>>> all_scores = bowler_dict.values()
>>> all_scores
[155, 175, 135, 300, 120, 205]
>>> average_score = sum(all_scores)/float(len(all_scores))
>>> average_score
181.66666666666666


>>> for bowler in bowler_dict:
        score =  bowler_dict[bowler]
        if score == 300:
            classify = 'PERFECT'

        if average_score < score < 300:
            classify = 'Above Average'
        else:
            classify = 'Below Average'
        print bowler, score, classify


Jeffrey 155 Below Average
Jim 175 Below Average
Billy 135 Below Average
Joe 300 Below Average
Bob 120 Below Average
Jack 205 Above Average

相关问题 更多 >