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)))
运行结果如下:
根据此代码中相应的要点:
多少秒后继续执行。
(代码第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行)