自己写的程序:
list1=["mlg","pty","xby","yl"]
dic={}
for i in list1:
m=input("请分别输入mlg、pty、xby、yl的胜场数、平场数和败场数,并且用“-”分割:").split("-")
a,b,c=(int(x) for x in m)
point=3*a+b
dic[i]=point #添加字典内容
print(m,type(m)) #split()出来的东西是列表,单个input出来的是字符串
print(dic.items()) #dict_items([('mlg', 1), ('pty', 5), ('xby', 5), ('yl', 4)])
dic1=sorted(dic.items(),key=lambda x: x[1],reverse=True) #sorted出来的是列表
print(dic1) #[('pty', 5), ('xby', 5), ('yl', 4), ('mlg', 1)]
dic2=dict(dic1)
list2=[] #具体的分数列表
dic3=[] #key
for x,y in dic1:
list2.append(y)
dic3.append(x)
a=1
for i in range(3):
if list2[i]!=list2[i+1]:
print("第{0}的是{1}".format(a,dic3[a-1]))
a+=1
else:
print("第{0}的有两名,是{1}和{2}".format(a,dic3[a-1],dic3[a]))
print("他俩继续竞争")
m=input("请输入净胜球数,并用“-”分开:")
x,y=(int(x) for x in m.split("-"))
for i in range(2):
if x>y:
print("第1名的是{}".format(dic3[a-1]))
print("第2名的是{}".format(dic3[a]))
break
elif x<y:
print("第1名的是{}".format(dic3[a]))
print("第2名的是{}".format(dic3[a-1]))
break
else:
print("他俩继续竞争进球数")
m=input("请输入进球数,并用“-”分开::")
x,y=(int(x) for x in m.split("-"))
a+=2
#********************************************************************
题目的解法
利用了sort和sorted的稳定排序来实现排名。
由次关键字到主关键字,当次关键字有区别,主关键字相同时。先sort次关键字,再sort主关键字,若此时有项相同,则它们的相对位置与sort次关键字相同。
如见下图:
最终程序如下:
题目来自慕课《Python程序设计》苏州大学