1、明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

  1. while True:
  2. try:
  3. n=int(input()) #读入一个int型:随机整数的个数
  4. mySet=set()
  5. for i in range(n):
  6. mySet.add(int(input())) #每次运行到input()时都会唤起等待用户输入
  7. #列输出:
  8. for i in sorted(mySet):
  9. print(i)
  10. #行输出:
  11. print(sorted(mySet))
  12. except:
  13. break

2、对奖牌榜就行排序,数据里面包含了15个国家的金、银、铜数据,使用 \n 作为分隔符:

  1. s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
  2. stodata = s.split('\n',-1)
  3. # 使用sorted
  4. para = {}
  5. for line in range(len(stodata)):
  6. # 每一行数据
  7. data = stodata[line].split(' ')
  8. print(data)
  9. # 组装数据结构para={'China': [], 'Russia': []}
  10. para[data[0]] = [int('-' + i) for i in data[1:]]
  11. # 开始排序(x[1]代表奖牌数目, x[0]代表国家)
  12. new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
  13. print()
  14. c=[]
  15. for i in new_para:
  16. c.append((i[0]))
  17. for j in range(15):
  18. print(f"{(j+1):2d} {c[j]}")

输出结果为:

  1. ['德国', '10', '11', '16']
  2. ['意大利', '10', '10', '20']
  3. ['荷兰', '10', '12', '14']
  4. ['法国', '10', '12', '11']
  5. ['英国', '22', '21', '22']
  6. ['中国', '38', '32', '18']
  7. ['日本', '27', '14', '17']
  8. ['美国', '39', '41', '33']
  9. ['俄罗斯奥委会', '20', '28', '23']
  10. ['澳大利亚', '17', '7', '22']
  11. ['匈牙利', '6', '7', '7']
  12. ['加拿大', '7', '6', '11']
  13. ['古巴', '7', '3', '5']
  14. ['巴西', '7', '6', '8']
  15. ['新西兰', '7', '6', '7']
  16. 1 美国
  17. 2 中国
  18. 3 日本
  19. 4 英国
  20. 5 俄罗斯奥委会
  21. 6 澳大利亚
  22. 7 荷兰
  23. 8 法国
  24. 9 德国
  25. 10 意大利
  26. 11 加拿大
  27. 12 巴西
  28. 13 新西兰
  29. 14 古巴
  30. 15 匈牙利