python - 滑冰计分系统

标签 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:

    #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

在循环的第一次,listl_list 都是空的:你得到 name 和 scores,将它们附加到 list 并且将其附加到 l_list。一切都很好。

但随后您会为下一位滑冰者再次完成循环。您将他们的姓名和分数附加到 list 中,该列表已经包含前一位选手的姓名和得分。然后,您再次将整个内容附加到 l_list。现在 l_list 有两个 list 副本,list 有滑冰者和他们的分数。

在调用 list.append() 之前添加 list = [] 应该可以解决问题。

关于python - 滑冰计分系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50919887/

相关文章:

python - 理解位置参数的直观方法不应该跟在关键字参数之后

python - 我可以在 def __init__ 中添加方法吗?

python - pandas timeseries DF 切片和选择

java - 从列表中删除字符串并在java中排序

python - 在单行中打印不带括号的列表

python - 将 python 中的键与字典中的值进行匹配

python - 带有交互式 SVG 图像的 pyQt

python - 关于设置工具和替代品的问题

java - 如何将 map 列表转换为 CSV

python - 如何将一个值 append 到列表中的每个元组?