Python快速编程入门第2版 第五章 p068 实训案例 5.7.1青春有你

        近两年偶像选秀节目风靡,吸引了许多喜欢唱跳、有明星梦想的少男少女参加,《青春有你》正是节目之一。《青春有你》采用计票机制,选手获得的票数越多,排名就越靠前。本案例要求编写程序,接收选手的姓名和票数,输出排序后的成绩。

目录

python代码

运行结果

代码中相应的要点

      time.sleep()

      异常处理——try-except

      字典d.get()方法

      字典的排序

python代码如下:

##p068 5.7.1 青春有你
print('《青春有你》采用计票机制,选手获得的票数越多,排名就越靠前。本案例要求编写程序,\
接收选手的姓名和票数,输出排序后的成绩。')

import time as t
print('****************选手的号数与名称***********************')
print('1.A   2.B   3.C   4.D   5.E   6.F   7.G   8.H   9.I')
print('*********************************************************')
id_name = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I'}
d={1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
c = 0
while c<=9:  #共十位评委
     try:
          n = eval(input('请评委{}根据以上选手的号数进行投票:'.format(c+1)))
          if n in (1,2,3,4,5,6,7,8,9):
               d[n] = d.get(n,0)+1
               c+=1
          elif n>=10 or n<=0 :
               print('您输入的号数有误,请根据提示重新投票')
               t.sleep(1)
     except:
          print('输入的形式有误,请仅输入选手号')
          t.sleep(1)
ls = sorted(d.items (),key = lambda x:x[1],reverse = True)
print('**********************投票结果如下**********************')
print('根据10位评委的投票,各个选手的票数及成绩为:')
for i in ls:
     print('  选手 {} 成绩为 {}'.format(id_name[i[0]],100*(i[1]/c)))

运行结果如下:

黑马python笔记pdf_默认值

 根据此代码中相应的要点:

多少秒后继续执行。 
(代码第5/20/23行)
        异常处理 :try-except,用于捕获用户输入时的各种错误形式情况,例如:+,?等非数字的输入。 
(代码第13~21行)
        字典的计数操作:d[i] = d.get(i,0)+1  # 通过字典d的键i返回其值,若键存在则返回相应值,否则返回默认值0。  +1后成为当前投票后的值。
d.get(key,default)  #若键存在则返回相应值,否则返回默认值default
此方法应好好理解后掌握,在字典的应用中d.get()方法十分好用 
(代码第16行)
        字典的排序: ls = sorted(d.items (),key = lambda x:x[1],reverse = True)
key = lambda x:x[1]  按照字典的值排序
key = lambda x:x[0]  按照字典的键排序
reverse = True  降序排序
reverse = False (默认)升序排序 
(代码第24行)