python期末

  1. (其它)
    为丰富校园文化生活,学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正、防止作弊和恶意打分,计算得分(即平均分)时会先去掉最高分和最低分。

本案例要求编写程序,实现根据需求计算每位选手得分的功能。

  1.  实例目标
    

通过完成本实例,读者应掌握以下知识或技能:

l 熟练地创建列表并访问列表元素

l 熟练地添加、删除、排列列表元素

  1.  实例分析
    

(1) 按照前面“由评委组的十名评委打分”的描述,需要找一个列表记录每个评委的分数,此时列表中的元素是没有顺序的。

(2) 找出列表中的最高分和最低分,也就是先使用sort()方法按从低到高的顺序排列列表元素,此时列表中位于开头的元素为最低分,位于结尾的元素为最高分。

(3) 去掉最高分和最低分就相当于删除列表的头尾元素,可借助remove()方法删除列表的首位元素,借助pop()方法删除列表的尾部元素,此时列表中的元素是计算得分需要的列表。

(4) 计算得分操作也就是遍历列表求和、求平均数。

  1.  作业要求
    

答案框中填入完整代码,并附代码测试结果截图。

#!/usr/bin/python

-- coding: UTF-8 --

import math

list1 = []

list2 = []

sum = 0

i = 0

score = 0

while len(list2) < 5: # 可更改人数

sum = 0

score = 0

i = 0

list1 = []

print(“给第”, len(list2) + 1, “位同学打分中”)

while len(list1) < 5:
a = int((input(“输入第” + str(len(list1) + 1) + “位评委给出的成绩”)))

   list1.append(a)

list1.sort()

list1.remove(list1[0])

list1.remove(list1[-1])

while i < 3:
sum = sum + list1[i]

   i += 1

score = sum / 3

list2.append((len(list2) + 1, score))

i = 0

j = 0

flag = 0

print(“最终得分为”, (list2))

  1. (其它)

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

  1.  实例目标
    

通过完成本实例,读者应掌握以下知识或技能:

l 熟练创建字典和访问字典元素

l 熟练列表的基本操作

  1.  实例分析
    

(1)上面描述的选手的姓名与票数是一一对应的关系,因此可通过字典保存像这种关系的数据。

(2)按“选择的票数越多,排名越靠前”描述,此处需要比较字典中保存的票数,票数最高的选手位列第1名,票数最少的选手位列最后一名,可借助列表的sort()方法进行排序。

  1.  作业要求
    

答案框中填入完整代码,并附代码测试结果截图。

在这里插入在这里插入图片描述
图片描述

3.随着无人新零售经济的崛起,商场、车站、大厦等各种场所都引入了无人饮品自动售货机,方便人们选购自己想要的饮品。购买者选择想要的饮品,通过投币或扫码的方式支付,支付成功后从出货口取出饮品。本案例要求编写代码,利用函数实现具有显示饮品信息、计算总额等功能的程序。

  1.  实例目标
    

通过完成本实例,读者应掌握以下知识或技能:

l 熟练地定义和调用函数

l 熟练地使用函数的参数

  1.  实例分析
    

根据上面的描述可知,饮品自动售货机具有显示饮品信息、计算总额两个功能,这里可将这两个功能抽取成两个函数:show_goods()和total()。

另外,定义一个控制饮品自动售货机操作流程的函数main(),该函数中会先调用show_goods()函数展示饮品信息,用户根据展示的信息选择商品和数量,选购完之后输入“q”会调用total()函数计算总额。

  1.  作业要求
    

答案框中填入完整代码,并附代码测试结果截图。

stu_info = []

def print_menu():
print(‘=’*30)
print(‘学生管理系统 V1.0’)
print(‘1.添加学生信息’)
print(‘2.删除学生信息’)
print(‘3.修改学生信息’)
print(‘4.查询所有学生信息’)
print(‘0.退出系统’)
print(‘=’*30)

def add_stu_info():
new_name = input(‘请输入新学生的姓名’)
new_sex = input(‘请输入新学生的性别’)
new_phone = input(‘请输入新学生的手机号:’)
new_info = dict()
new_info[‘name’] = new_name
new_info[‘sex’] = new_sex
new_info[‘phone’] = new_phone
stu_info.append(new_info)

def del_stu_info(student):
del_num = int(input(‘请输入要删除的序号’)) - 1
del student[del_num]
print(‘删除成功!’)

def modify_stu_info():
if len(stu_info) != 0:
stu_id = int(input(‘请输入要修改的学生序号:’))
new_name = input(‘请输入要修改学生的姓名:’)
new_sex = input(‘请输入要修改学生的性别:(男/女)’)
new_phone = input(‘请输入要修改学生的手机号码:’)
stu_info[stu_id - 1][‘name’] = new_name
stu_info[stu_id - 1][‘sex’] = new_sex
stu_info[stu_id - 1][‘phone’] = new_phone
else:
print(‘学生信息为空’)

def show_stu_info():
print(‘学生的信息如下’)
print(‘=’*30)
print(‘序号 姓名 性别 手机号码’)
i = 1
for tempInfo in stu_info:
print(‘%d %s %s %s’ % (i, tempInfo[‘name’], tempInfo[‘sex’], tempInfo[‘phone’]))
i += 1

def main():
while True:
print_menu()
key = input(“请输入功能对应的数字:”)
if key == ‘1’:
add_stu_info()
elif key == ‘2’:
del_stu_info(stu_info)
elif key == ‘3’:
modify_stu_info()
elif key == ‘4’:
show_stu_info()
elif key == ‘0’:
quit_confirm = input(‘是否要退出?(Yes or No):’).lower()
if quit_confirm == ‘yes’:
print(‘谢谢使用!’)
break
elif quit_confirm == ‘no’:
continue
else:
print(‘输入有误’)

if name == ‘main’:
main()

4.学生管理系统

学生信息是高等院校的一项重要数据资源,具有数量庞大、学员广泛、更新频繁等特点,给管理人员带来了不小的冲击。随着计算机应用的普及,人们使用计算机设计了针对学生信息特点及实际需要的学生管理系统,使用该系统可以高效率地、规范地管理大量的学生信息,减轻了管理人员的工作负担。本案例要求开发一个具有添加、删除、修改、查询学生信息及退出系统功能的简易版学生管理系统,该系统的功能菜单如图6-6所示。

图6-6 学生管理系统的功能菜单

  1.  实例目标
    

通过完成本实例,读者应掌握以下知识或技能:

l 熟练定义和调用函数

l 熟练声明和访问全局变量

  1.  实例分析
    

图6-6的学生管理系统具有五个基本功能:添加学生信息、删除学生信息、修改学生信息、查询所有学生信息、退出系统,每个功能对应一个编号。用户可以通过输入编号选择想执行的操作。

(1)若用户输入1,则会执行添加学生信息的操作:用户按照系统提示依次录入新学生的姓名、性别和手机号。

(2)若用户输入2,则会执行删除学生信息的操作:用户按照系统提示输入待删除学生信息的正确序号,即可看到“删除成功!”的提示信息。

(3)若用户输入3,则会执行修改学生信息的操作:用户按照系统提示先输入待修改学生的序号,再依次输入修改后的学生姓名、性别和手机号。

(4)若用户输入4,则会执行查询所有学生信息的操作,可以看到系统显示了所有学生的信息。

(5)若用户输入0,则会执行退出系统的操作:用户按照系统提示可以输入Yes或No,输入Yes则可以“删除成功!”提示信息,输入No则返回功能菜单。

下面画图来分析使用一次学生管理系统的完整流程,具体如图6-7所示。

图6-7学生管理系统的流程图

由图6-7的可知,系统的使用流程可以使用if-elif语句控制,每个子句(除了“输入0”的elif子句)对应一个功能。为了明确程序的结构,我们可以将学生管理系统的各个功能抽取成独立的函数,关于这些函数的设计如下:

l print_menu():用于打印学生管理系统的功能菜单;

l add_stu_info():用于添加学生的信息;

l del_stu_info():用于删除学生的信息;

l modify_stu_info():用于修改学生的信息;

l show_stu_info():用于显示所有学生的信息;

l main():主程序,用于控制一次使用学生管理系统的完整流程。

为了增加程序的实用性,这里可以在main()函数中增加一个死循环,除非用户输入“0”主动地退出学生管理系统,否则可以一直使用学生管理系统。

除此之外,每个学生的信息包括姓名、性别、手机号码,这里可以用字典表示学生信息,用列表存储所有学生的信息。

  1.  作业要求
    

答案框中填入完整代码,并附代码测试结果截图。

drink = {‘可乐’: 3, ‘雪碧’: 3, ‘营养快线’: 4, ‘红牛’: 6}
Cart = []
def Go_shooping():
for key, values in drink.items():
print(key, values)

def main():
count = 0
while True:
input_in = input(“请输入您要购买的东西,输入end退出购买”)
if input_in == ‘end’:
print(“消费总金额为{}”.format(count))
break
for key, values in drink.items():
if key == input_in:
count_num = int(input(“请输入您的购买数量”))
Cart.append(input_incount_num)
count += values
count_num
print(“您的购物车里现在有”,Cart)
print(“目前消费金额为{}”.format(count))
if name == ‘main’:
Go_shooping()
main()

5.相信大家对猜拳游戏都不陌生。猜拳游戏又称猜丁壳,是一个古老、简单、常用于解决争议的游戏。猜拳游戏一般包含三种手势:石头、剪刀、布,判定规则为石头胜剪刀,剪刀胜布,布胜石头。本案例要求编写代码,实现基于面向对象思想的人机猜拳游戏。

  1.  实例目标
    

通过完成本实例,读者应掌握以下知识或技能:

l 理解面向对象的思想

l 熟练地定义类

l 熟练地创建对象、访问类的成员

l 熟练使用构造方法

l 掌握类继承的使用

  1.  实例分析
    

(1)为了用户输入的便捷性,我们可以将“剪刀”“石头”“布”三种手势与数字构建成对应的dict类型——{0: ‘剪刀’, 1: ‘石头’, 2: ‘布’}。

(2)因为都是对{0: ‘剪刀’, 1: ‘石头’, 2: ‘布’}数据进行操作,所以我们可以在用户类中的构造方法中定义该数据,并令电脑类继承此类。

(3)在人机猜拳中,人表示用户,机表示电脑。用户所选择的手势由用户输入,电脑的手势则随机产生。

(4)为了增加电脑获胜的概率,我们可以将用户输入的手势保存在一个列表中,通过计算该列表中用户最大概率的手势生成电脑获胜的手势。

(5)根据猜拳的游戏规则对用户和电脑选择手势进行判断哪方获胜,并输出电脑生成的手势。

人机猜拳类图如图1所示。

3、要求

 上传实现代码和运行结果截图。

-- coding: utf-8 --

import random

list1=[0,0,0,1,1,1,2,2,2]

flag=‘Y’

class Player():

dict1={0:'剪刀',1:'石头',2:'布'}

    

def getture(u):

    global list1

    list1.append(u)

    return u

class AIPlayer(Player):

def ai_getture():

    global list1

    '''

    a={}

    for x in list1:

        if list1.count(x)>1:

            a[x]=list1.count(x)



    '''

    a=random.choice(list1)

    if a==0:

        return 1

    if a==1:

        return 2

    if a==2:

        return 0

class Game():

def game_judge():

    a=Player.getture(int(input("输入手势")))

    b=AIPlayer.ai_getture()

    print("你出的是",Player.dict1[a],"电脑出的是",AIPlayer.dict1[b])

    if a==b:

        print("平局")

    elif a!=b:

        if a==0 and b==1:

            print("电脑赢了")

        elif a==0 and b==2:

            print("玩家赢了")

        elif a==1 and b==0:

            print("玩家赢了")

        elif a==1 and b==2:

            print("电脑赢了")

        elif a==2 and b==0:

            print("电脑赢了")

        elif a==2 and b==1:

            print("玩家赢了")

        else :

            print("输入有误")

def game_start(flag):

    if flag=='Y':

        Game.game_judge()

    else:

        exit(0)

while(1):

Game.game_start(flag)

flag=input("按Y继续")
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼古拉斯涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值