我正在为课程编写代码,并且已经卡住了。我的故障排除对我没有帮助。我遇到的第一个问题是,当将读取文件拆分为列表中索引的[name,score]格式时,它会读取额外的行,但也会读取正确的行。然后在编写outfile时,它只读取列表中的最后一个索引,但是对于列表中的那个索引,这是正确的输出。我一直在阅读我的书,但无法找到如何使用列表及其索引来完成第二个if语句。这是作业: 编写一个程序,从一个名为“bowlingscores.txt”的外部文件中读取未知数量的保龄球和他们的保龄球分数(可能的值从1到300)。该文件将类似于以下内容:David 102 Hector 300 Mary 195 Jane 160 Sam 210将保龄球的名称输出到名为“bowlingaverages.txt”的外部数据文件。在每个投球手的名字旁边,根据他们的分数打印一条消息:对于完美分数(等于300),输出“完美”对于那些大于平均分数的分数,输出“高于平均值”对于低于平均值的那些,输出“低于平均值” “您的程序必须包含至少一个函数(例如,计算平均值,确定要打印的相应消息等)。
infile = open("bowlingscores.txt", "r")
name=0
score=0
averagescore=0
count=0
bowlersinfo=[]
for line in infile:
if line.strip().isdigit():
score=int(line)
else:
name=line.strip()
bowler= name, score
bowlersinfo.append(bowler)
print bowlersinfo
averagescore += score
infile.close()
averagescore /= float(len(name))
for count in range (len(name)):
if score==300:
outcome= "Perfect"
elif score > averagescore:
outcome= "Above Average"
elif score== averagescore:
outcome= "Average"
else:
outcome= "Below Average"
outfile = open("bowlingaverages.txt", "w")
outfile.write(name, )
outfile.write(outcome)
outfile.close()
print ("%s, %0.0f, %s" % (name, float(score), outcome))
这是我得到的输出。粗体打印是我需要输出的输出。不是所有额外的。每个名字应该像最后一行一样显示 [('David',0),('David',102),('Hector',102),('Hector',300),('Mary ',300),('Mary',195),('Jane',195),('Jane',160),('Sam',160) ,('Sam',210)] Sam,210,高于平均水平
答案 0 :(得分:0)
我不确定你的循环结构是否正确,以及你在阅读文件时是否正确读取字符串。
我不想过多地使用原始代码。所以我在这里和那里改变了一些东西。您可以使代码更紧凑。
infile = open("bowlingscores.txt", "r")
name=0
score=0
averagescore=0
count=0
bowlersinfo=[]
for line in infile:
bowler,score= line.split()
score = int(score)
averagescore += score
bowlersinfo.append([bowler,score])
print (bowlersinfo)
infile.close()
averagescore /= float(len(bowlersinfo))
outfile = open("bowlingaverages.txt", "w")
for name,score in bowlersinfo:
if score==300:
outcome= "Perfect"
elif score > averagescore:
outcome= "Above Average"
elif score== averagescore:
outcome= "Average"
else:
outcome= "Below Average"
print ("%s, %0.0f, %s" % (name, float(score), outcome))
outfile.write(name+": " )
outfile.write(outcome+"\n")
outfile.close()