Python 编程1000例(9):学生成绩明细单、购物车及挂号就诊系统

本系列文章通过 1000(一篇文章表示 1 个实例) 个实例 ,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本系列的文章涉及到 Python 知识点包括:Python 语言基础、运算符和表达式、语句和程序结构、列表和元组、字典和集合、字符串、正则表达式、函数、面向对象编程、模块和包、异常处理和程序调试、文件和目录操作、数据库编程、界面编程、网络编程、WEB 编程、进程和线程、网络爬虫、游戏编程等知识点,由易到难,由浅入深,一步步打下坚实的编程基础。

本系列文章涉及的算法包括搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等,涉及的数据结构包括字符串、列表、指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。

本系列文章是笔者为适应当前教育改革的创新要求,更好地践行语言类课程,满足实践教学与创新能力培养的需要,阅读大量书籍、各大互联网公司的面试算法、LintCode、LeetCode、九章算法和结合笔者近几年项目经验编写的系列文章,精选了 1000 个趣味性、实用性强的应用实例,从不同难度、不同算法、不同类型和不同数据结构等方面,将实际算法进行总结,希望为 Python 编程人员抛砖引玉。由于笔者经验与水平有限,博文中疏漏及不妥之处在所难免,衷心地希望各位读者在评论区多提宝贵意见及具体的修改建议,以便笔者进一步修改和完善。

一、学生成绩明细单

需求:设计一个列表,计划存储 4 名学生的成绩,包括语文、数学和英语三门科目。分别给这 4 名学生添加相应的学科分数,求出总分第一名的学生和各科目的成绩明细。演示效果如下:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:21.学生成绩单明细.py
@time:2021/01/23
"""

import random  # 导入随机函数包


def get_score(result):  # 定义分数生成函数
    while True:  # 无限次循环
        score = random.randint(60, 100)  # 随机生成一个在60-100之间的数
        if score not in result:  # 判断该数是否在不在列表中
            result.append(score)  # 将该随机数添加到列表中
            break  # 跳出循环
    return result  # 返回列表


student_name = ["张三", "李四", "王五", "赵六"]  # 定义有4个学生的列表
chinese_score = list()  # 定义存储语文分数的列表
math_score = list()  # 定义存储数学分数的列表
english_score = list()  # 定义存储英语分数的列表
for i in range(len(student_name)):  # 通过循环生成语文、数学、英语分数
    chinese_score = get_score(chinese_score)  # 生成一个语文分数
    math_score = get_score(math_score)  # 生成一个数学分数
    english_score = get_score(english_score)  # 生成一个英语分数
print('student name:', student_name)  # 打印学生名单
print('chinese score:', chinese_score)  # 打印语文成绩单
print('math score:', math_score)  # 打印数学成绩单
print('english score:', english_score)  # 打印英语成绩单
student_detail_score = list()  # 定义存储学生成绩明细的列表
# 生成成绩明细
for i in range(len(student_name)):  # 通过循环生成每位学生成绩明细单
    student_score = list()  # 定义学生分数列表
    student_score.append(chinese_score[i])  # 将语文分数添加到列表中
    student_score.append(math_score[i])  # 将数学分数添加到列表中
    student_score.append(english_score[i])  # 将英语分数添加到列表中
    student_detail_score.append(student_score)  # 将该学生的成绩明细添加到列表中
print('学生成绩单明细:', student_detail_score)  # 打印所有学生的成绩明细
student_total_score = list()  # 定义总分成绩列表
for i in student_detail_score:  # 循环遍历学生成绩明细列表
    student_total_score.append(sum(i))  # 将学生的成绩明细单求和并添加到总分列表中
print('总分明细:', student_total_score)  # 打印总分成绩列表
first = sorted(student_total_score)[len(student_name) - 1]  # 获取最高分
first_index = student_total_score.index(first)  # 获取最高分对应的下标
# 打印第一名学生的姓名、总分和平均分
print("第一名:\n姓名:%s,总分:%d,均分:%.2f" % (student_name[first_index], first, first / 3))
# 打印第一名学生的成绩明细
print("语文:%d,数学:%d,英语:%d" % (student_detail_score[first_index][0],
                             student_detail_score[first_index][1], student_detail_score[first_index][2]))

二、购物车

需求:设计一个简单的购物车程序,将想要购买的商品信息添加到购物车中。程序运行结果如下图所示:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:22.购物车.py
@time:2021/01/23
"""

products = [['iphone11', 5499],  # 定义商品列表
            ['mate30 Pro', 5799],
            ['小米9 Pro', 4299],
            ['Canon 80D', 8299],
            ['华为P30 Pro', 4988],
            ['MacBook Pro', 10579]]
print('***************商品列表***************')
for index, p in enumerate(products):  # 循环遍历商品信息
    print("{}.{}  \t{}".format(index, p[0], p[1]))  # 打印所有的商品
shopping = list()  # 定义一个空的购物车列表
while True:  # 循环向购物车中添加商品
    choice = input('请选择添加购物车的编号:')  # 选择购买的商品编号
    if choice.isdigit():  # 判断输入的类型是否是数字
        choice = int(choice)  # 将字符串类型转换为数字类型
        if 0 <= choice < len(products):  # 判断输入的商品编号是否满足条件
            shopping.append(products[choice])  # 将选择的商品添加到购物车中
            print('%s 已加入购物车' % (products[choice]))  # 打印添加的商品信息
        else:
            print('选择的商品不存在,请重新选择')  # 打印商品不存在信息
        flag = input('是否继续添加商品[y/n]:')  # 判断是否继续添加商品,
        if flag != 'y':  # 只有输入y时为真,其余情况为假
            print('***************购物车***************')
            for index, s in enumerate(shopping):  # 遍历购物车列表
                print("{}.{}  \t{}".format(index, s[0], s[1]))  # 打印购物车中的商品信息
            break  # 跳出循环
    else:
        print('商品编号格式不正确,请重新输入!')  # 打印商品编号格式不正确信息

三、挂号就诊系统

需求:编写一个程序,反映病人到医院挂号看病的情况。通过模拟病人挂号就诊这一过程,系统主要功能如下:
挂号:输入挂号病人的名字,将其加入挂号队列中。
就诊:挂号队列中最前的病人前往就诊,并将其从挂号队列中移除。
查看已挂号人数:将挂号队列中的病人从前往后显示出来。
挂号人满不再预约:显示已经挂号的病人,结束程序。

示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:23.挂号就诊系统.py
@time:2021/01/23
"""

q = []  # 定义一个空列表,存储挂号的病人
while True:  # 无限次使用系统
    print('''	# 以原格式打印系统格式
    ************ 就诊挂号系统 ************
        1.挂号
        2.就诊
        3.查看已挂号人数
        4.挂号人满不再预约
    ''')
    choice = input('输入选项序号:')  # 输入操作序号
    if choice == '1':  # 选择挂号功能
        name = input('您的姓名:')  # 输入病人的姓名
        if name in q:  # 判断该病人是否已经挂号
            print('您已挂号!')  # 打印信息
        else:  # 之前没有挂号
            q.append(name)  # 将该病人的姓名添加到列表中
            print('挂号成功!')  # 打印挂号成功信息
    elif choice == '2':  # 选择就诊功能
        if q is []:  # 判断是否没有人在挂号列表中
            print('没有人预约挂号!')  # 打印信息
        else:
            print('请%s前往就诊。' % q[0])  # 打印前往就诊人姓名
            q.pop(0)  # 将该人姓名从列表中移除
    elif choice == '3':  # 选择查看已挂号人员功能
        for i, name in enumerate(q):  # 遍历挂号人员列表
            print('No.{}:{}'.format(i + 1, name))  # 打印信息
    elif choice == '4':  # 选择结束挂号功能
        for i, name in enumerate(q):  # 遍历挂号人员列表
            print('No.{}:{}'.format(i + 1, name))  # 打印信息
        print('挂号人数已满,不再挂号!')  # 打印不在挂号信息
        exit(0)  # 退出系统
    else:  # 选择的操作不正确
        print('序号格式输入错误!')  # 打印错误信息
        break

感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/113031890