Python 滑冰运动员记分系统
这是我一直在做的一个项目,但我遇到了一些问题。当这个程序被执行时,它会打印两次滑冰者的名单和相关信息,但我不想这样,但我不知道如何修复它Python 滑冰运动员记分系统,python,list,Python,List,这是我一直在做的一个项目,但我遇到了一些问题。当这个程序被执行时,它会打印两次滑冰者的名单和相关信息,但我不想这样,但我不知道如何修复它 # THESE ARE LISTS TO STORE INDIVIDUAL SKATERS AND THERE SCORES AND MEDIUM l_list = [] list = [] #STATMENT TO START WHILE LOOP AND TO END IT re = True while re == True: #S
# THESE ARE LISTS TO STORE INDIVIDUAL SKATERS AND THERE SCORES AND MEDIUM
l_list = []
list = []
#STATMENT TO START WHILE LOOP AND TO END IT
re = True
while re == True:
#STORING THE SKATERS NAME AND ADDING OPTION TO STOP ADDING SKATERS IN TO PROGRAM
a_name = input("Please store the skaters name, if there are no more skaters enter 'stop'")
#PRINTING ALL SKATERS AND THERE SCORES AND MEDIUM AND ADDING OPTION TO ADD MORE OR END PROGRAM
if a_name == 'stop':
#were pritn(l_list was)---------------------------------------------------------------------------------------
for s in l_list:
print(*s)
exit = input("Would you like to exit? 'y/n'. ")
if exit == 'y':
break
#WHILE LOOP TO GET SCORES AND STORE THEM IN A LIST
scores = []
repeat = True
while repeat == True:
#ASKING FOR THE SCORES AND A INPUT TO END THIS PROGRAMS FUNCTION WHICH WILL STORE THE SCORES TO THE LIST(scores)
score = input("please type in your scores one at a time, and 'done' when finished.")
if score == "done":
repeat = False
else:
scores.append(score)
#SORTING SCORES, REMOVING HIGHEST AND LOWEST SCORES
scores.sort()
scores.remove(max(scores))
scores.remove(min(scores))
#STORING THE VARIABLE(a_name) AND THE LIST(scores) IN THE LIST(list)
#THEN STORING THE LIST(list) INTO THE LIST(l_list)
list.append(a_name)
list.append(scores)
l_list.append(list)
#CONVERTING THE CONTENTS OF THE LIST(scores) IN TO FLOATS SO THAT IT CAN FIND TEH MEDIUM/AVERAGE SCORE USING LEN AND SUM
#THEN STORING THE VARIABLE(med) INTO THE LIST(list)
scores = [float(i) for i in scores]
med = (sum(scores) / float(len(scores)))
list.append(med)
#RUN FUNCTION
start()
当我运行带有一些测试结果的程序时,它会打印以下内容:
[['thomas', ['2', '3', '4', '58'], 16.75, 'renee', ['2', '3', '4', '5', '6'], 4.0], ['thomas', ['2', '3', '4', '58'], 16.75, 'renee', ['2', '3', '4', '5', '6'], 4.0]]
Would you like to exit? 'y/n'.
正如您所看到的,它会打印两次,这是我不想要的。您需要通过循环每次重新创建
列表
第一次通过循环时,list
和l\u list
都是空的:您获得姓名和分数,将它们附加到list
并将其附加到l\u list
。一切都很好
但是你要为你的下一个滑冰选手第二次完成这个循环。您可以将他们的姓名和分数附加到列表
,该列表已包含前一名滑冰运动员的姓名和分数。然后,您将整个内容再次附加到l\u列表中。现在,l_list
有两份list
的副本,list
既有滑冰选手也有他们的分数
在调用list.append()
之前添加list=[]
可以解决问题。您需要通过循环每次重新创建list
第一次通过循环时,list
和l\u list
都是空的:您获得姓名和分数,将它们附加到list
并将其附加到l\u list
。一切都很好
但是你要为你的下一个滑冰选手第二次完成这个循环。您可以将他们的姓名和分数附加到列表
,该列表已包含前一名滑冰运动员的姓名和分数。然后,您将整个内容再次附加到l\u列表中。现在,l_list
有两份list
的副本,list
既有滑冰选手也有他们的分数
在调用list.append()
之前添加list=[]
可以解决问题。您有了一个良好的开端,但我想警告您不要使用变量名list
。这是Python中一个类型的名称,因此可以使用lst
或list\uu
。在这种情况下,我称之为skater\u list
。涵盖所有不用于变量的名称
当你在列表中添加名字和分数时,你永远不会清除它们,所以你会多次添加它们
然而,我不认为列表实际上是这里最有用的数据结构。我认为一个dict
,其中关键是名字,值是分数,效果最好
首先,创建一个dict
,而不是列表:
final_dict = {}
打印列表时,请改为打印dict
:
if a_name == 'stop':
#were pritn(l_list was)---------------------------------------------------------------------------------------
for name, scores in final_dict.items():
score, med = scores
print(name, score, med)
删除代码以将项目添加到列表中
scores.sort()
scores.remove(max(scores))
scores.remove(min(scores))
scores = [float(i) for i in scores]
med = (sum(scores) / float(len(scores)))
相反,将它们添加到字典中。在这里,我把钥匙做成了滑冰者的名字,并存储了所有剩余的分数和平均分数
final_dict[a_name] = (scores, med)
注意,您仍然需要清除分数列表:
scores = []
这里的输出类似于:
Adam [7.0, 8.0] 7.5
Joe [6.0, 7.0] 6.5
您有了一个良好的开端,但我想警告您不要使用变量名列表
。这是Python中一个类型的名称,因此可以使用lst
或list\uu
。在这种情况下,我称之为skater\u list
。涵盖所有不用于变量的名称
当你在列表中添加名字和分数时,你永远不会清除它们,所以你会多次添加它们
然而,我不认为列表实际上是这里最有用的数据结构。我认为一个dict
,其中关键是名字,值是分数,效果最好
首先,创建一个dict
,而不是列表:
final_dict = {}
打印列表时,请改为打印dict
:
if a_name == 'stop':
#were pritn(l_list was)---------------------------------------------------------------------------------------
for name, scores in final_dict.items():
score, med = scores
print(name, score, med)
删除代码以将项目添加到列表中
scores.sort()
scores.remove(max(scores))
scores.remove(min(scores))
scores = [float(i) for i in scores]
med = (sum(scores) / float(len(scores)))
相反,将它们添加到字典中。在这里,我把钥匙做成了滑冰者的名字,并存储了所有剩余的分数和平均分数
final_dict[a_name] = (scores, med)
注意,您仍然需要清除分数列表:
scores = []
这里的输出类似于:
Adam [7.0, 8.0] 7.5
Joe [6.0, 7.0] 6.5
“列表”是一个简单的名称。不建议将任何内置项用作变量名,因为您正在覆盖命名空间中的内置项。“列表”是一个变量名。不建议将任何内置项用作变量名,因为您正在覆盖命名空间中的内置项。同意不调用列表list
。除了Python已经使用它之外,名称list
并没有说明它是什么<代码>滑板者列表
,正如@Zev所建议的,是好的。或者,类似于skater\u data
。同意不调用您的列表list
。除了Python已经使用它之外,名称list
并没有说明它是什么<代码>滑板者列表
,正如@Zev所建议的,是好的。或者,类似于skater\u数据
。