Python小白学习教程从入门到入坑------习题课5(基础巩固)

目录

实战题

1、“千年虫”是什么虫?

2、模拟京东购物流程

3、模拟12306火车票订票流程

4、模拟手机通讯录


实战题

1、“千年虫”是什么虫?

要求:已知一个列表中存储的是员工的出生年份 [88,89,90,98,00,99] 由于时间比较久,出生的年份均为2位整数,现需要2位年份前加19,如果年份是00,则需要加上200。

【参考示例1】:采用遍历列表的方式

lst = [88, 89, 90, 98, 00, 99]  # 初始化列表,注意00在Python中等同于0
print(lst)  # 输出原始列表:[88, 89, 90, 98, 0, 99]

for index in range(len(lst)):  # 遍历列表中的每一个元素
    # 判断当前元素转换为字符串后是否不等于'0'
    # 这里的比较存在问题,因为当元素为0(即原始列表中的00)时,str(lst[index])为'0'
    if str(lst[index]) != '0':
        # 如果不等于'0',则拼接'19'并重新赋值
        # 这里会导致列表元素从整数变为字符串
        lst[index] = '19' + str(lst[index])
    else:
        # 如果等于'0',则拼接'200'并重新赋值
        # 注意,由于00在Python中就是0,所以这种情况只会针对数字0发生
        lst[index] = '200' + str(lst[index])  # 实际上这里应写为'2000',因为'200' + '0'会得到'2000'

# 输出修改后的列表,此时列表元素已全部变为字符串
print('修改后的年份列表:', lst)

输出内容:

[88, 89, 90, 98, 0, 99]
修改后的年份列表: ['1988', '1989', '1990', '1998', '2000', '1999']

【参考示例2】:使用enumerate() 函数

# 初始化一个列表,包含员工的两位整数出生年份。注意,Python中的整数00会被自动转换为0。
lst = [88, 89, 90, 98, 00, 99]

# 打印原始年份列表
print(lst)  

# 使用enumerate函数遍历列表,enumerate会同时返回元素的索引(index)和值(value)
for index, value in enumerate(lst):
    # 将当前年份值转换为字符串,以便进行字符串比较
    # 注意,当原始列表中的年份为0(即00)时,value的值为0,str(value)的结果为'0'
    if str(value) != '0':
        # 如果年份值转换为字符串后不等于'0',则在该年份前拼接'19'
        lst[index] = '19' + str(value)
    else:
        # 如果年份值转换为字符串后等于'0'(即原始列表中的0或00)
        lst[index] = '200' + str(value) 

# 打印修改后的年份列表,此时列表中的元素已全部变为字符串类型
print('修改后的年份列表:', lst)  

输出内容:

[88, 89, 90, 98, 0, 99]
修改后的年份列表: ['1988', '1989', '1990', '1998', '2000', '1999']

2、模拟京东购物流程

要求:从键盘录入5个商品信息(1001手机)添加到商品列表中,展示商品信息,提示用户选择商品,用户选中的商品添加到购物车中(购物车中的商品要逆序),用户选中的商品不存在需要有相应提示,当用户输入“q”时循环结束,显示购物车中的商品。

预期效果:

请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:1001手机
请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:1002水杯
请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:1003电脑
请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:1004猫粮
请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:1005猫砂
1001手机
1002水杯
1003电脑
1004猫粮
1005猫砂
请输入要购买的商品编号:1003
商品已成功添加到购物车
请输入要购买的商品编号:1005
商品已成功添加到购物车
请输入要购买的商品编号:1009
商品不存在
请输入要购买的商品编号:1001
商品已成功添加到购物车
请输入要购买的商品编号:q
--------------------------------------------------
您的购物车里已选择的商品为:
1001手机
1005猫砂
1003电脑

【参考示例】:
 

# 创建一个空列表,用于存储入库的商品信息
lst = []
# 通过循环,让用户输入5次商品编号和名称,并存储在列表中
for i in range(5):
    goods = input('请输入商品的编号和商品的名称进行商品入库,每次只能输入一件商品:')
    lst.append(goods)

# 输出所有的商品信息
for item in lst:
    print(item)

# 创建一个空列表,用于存储购物车中的商品
cart = []
# 使用while循环来不断处理用户输入,直到用户选择退出
while True:
    flag = False  # 初始化标志位,用于判断商品是否存在
    num = input('请输入要购买的商品编号(输入"q"退出购买):')
    
    # 遍历商品列表,检查用户输入的编号是否存在
    for item in lst:
        # 假设商品编号是前4个字符,根据这个假设进行切片操作
        if num == item[0:4]: 
            flag = True   # 如果找到,设置标志位为True
            cart.append(item)  # 将商品添加到购物车
            print('商品已成功添加到购物车')
            break  # 找到后退出循环
    
    # 如果商品不存在且用户没有选择退出,提示商品不存在
    if not flag and num != 'q':  
        print('商品不存在')
    
    # 如果用户输入"q",则退出购买循环
    if num == 'q':
        break  

# 输出分割线
print('-'*50)
# 输出购物车中的商品,注意这里对购物车列表进行了反转,可能是为了按输入顺序显示
print('您的购物车里已选择的商品为:')
cart.reverse()
for item in cart:
    print(item)

3、模拟12306火车票订票流程

要求: 假设北京到天津有以下4个车次可供选择,用户选择所要购买的车次,进行购票进站。、

预期效果:

车次     出发站-到达站     出发时间     到达时间     历时时长
G1569 北京南-天津南		18:06		18:39		00:33		
G1567 北京南-天津南		18:06		18:40		00:34		
G8917 北京南-天津西		18:32		19:01		00:29		
G2034 北京南-天津南		19:06		19:44		00:38		
请输入要购买的车次:G1567
请输入乘车人,如果是多位乘车人使用逗号分隔:小明,小红
您已购买了G1567 北京南-天津南 18:06开,请小明,小红尽快换取纸制车票。【铁路客服】

进程已结束,退出代码 0

【参考示例】:

# 创建字典用于存储车票信息,使用车次作key,其它信息(出发站-到达站、出发时间、到达时间、历时时长)作value
dict_ticket = {
    'G1569': ['北京南-天津南', '18:06', '18:39', '00:33'],
    'G1567': ['北京南-天津南', '18:06', '18:40', '00:34'],
    'G8917': ['北京南-天津西', '18:32', '19:01', '00:29'],
    'G2034': ['北京南-天津南', '19:06', '19:44', '00:38'],
}

# 打印车票信息的表头
print('车次     出发站-到达站     出发时间     到达时间     历时时长')

# 遍历字典中的元素,并格式化打印每趟车次的信息
for key in dict_ticket.keys():
    # 拼接并打印当前车次的所有信息
    print(f"{key}\t\t{'\t\t'.join(dict_ticket[key])}")

# 输入用户的购票车次
train_no = input('请输入要购买的车次:')

# 根据车次获取车票信息,若不存在则返回'车次不存在'
info = dict_ticket.get(train_no, '车次不存在')

# 判断车次是否存在,并处理用户输入
if info != '车次不存在':
    # 获取乘车人信息,支持输入多位乘车人(以逗号分隔)
    person = input('请输入乘车人,如果是多位乘车人使用逗号分隔:')
    
    # 拼接并格式化出发站-到达站及出发时间信息
    departure_info = f"{info[0]} {info[1]}开"
    
    # 打印购票成功信息
    print(f'您已购买了{train_no} {departure_info},请{person}尽快换取纸制车票。【铁路客服】')
else:
    # 打印车次不存在信息
    print('对不起,选择的车次可能不存在')

部分注释说明:

1、字典创建:dict_ticket 存储了车次及其相关信息(出发站-到达站、出发时间、到达时间、历时时长)

2、打印表头:print 语句用于打印车票信息的表头,清晰展示即将打印的车票信息格式

3、遍历字典并打印:使用 for 循环遍历字典中的每个键值对,并使用 join 方法将车票信息格式化为一行打印

4、用户输入车次:通过 input 函数获取用户想要购买的车次

5、根据车次获取信息:使用 dict.get() 方法根据车次获取相关信息,若车次不存在则返回'车次不存在'

6、处理用户输入:若车次存在,继续获取乘车人信息,并格式化出发站-到达站及出发时间信息,最后打印购票成功信息。若车次不存在,则打印车次不存在信息

4、模拟手机通讯录

要求:从键盘录入5位好友的姓名和电话,由于通讯录是无序的所以可以使用集合来实现。

预期效果:

请输入第1位好友的姓名: 小明
请输入小明的电话: xxxx111
请输入第2位好友的姓名: 小红
请输入小红的电话: 11xxxxx
请输入第3位好友的姓名: 小张
请输入小张的电话: 1x1x1x1
请输入第4位好友的姓名: 小王
请输入小王的电话: 1231xxx
请输入第5位好友的姓名: 小刘
请输入小刘的电话: 1221122

通讯录:
姓名: 小明, 电话: xxxx111
姓名: 小红, 电话: 11xxxxx
姓名: 小张, 电话: 1x1x1x1
姓名: 小王, 电话: 1231xxx
姓名: 小刘, 电话: 1221122

进程已结束,退出代码 0

【参考示例】:

# 初始化一个空字典来存储通讯录
contacts = {}

# 从键盘录入5位好友的姓名和电话
for i in range(5):
    name = input(f"请输入第{i + 1}位好友的姓名: ")
    phone = input(f"请输入{name}的电话: ")

    # 将姓名和电话存入字典,如果姓名已存在则提示并跳过
    if name in contacts:
        print(f"警告: 通讯录中已存在名为{name}的好友,请重新输入一个不同的姓名。")
    else:
        contacts[name] = phone

# 打印通讯录
print("\n通讯录:")
for name, phone in contacts.items():
    print(f"姓名: {name}, 电话: {phone}")

今天的分享就到这里了,希望能够帮助到大家~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用python简单集成一个分词工具

本部分记录如何利用Python进行分词工具集成,集成工具可以实现运行无环境要求,同时也更方便。 该文章主要是记录,知识点不是特别多,欢迎访问个人博客:https://blog.jiumoz.top/archives/fen-ci-gong-ju-ji-cheng 成品展…

CMake + mingw + opencv

由于是在windows下开发,因此下载的是windows版本的安装程序,如图: 下载的是 MSVC 编译的 OpenCV,但由于我一般使用的是JetBrains的开发工具,并且为了方便跨平台,我一般也是使用cmakemingw编译,这…

11.22 校内模拟赛总结

挂分场 复盘 决定尝试一下多放一点时间在前期看题上 T1 发现是模拟;T2 看上去好神秘啊!想了一会一直没什么思路;T3 看上去眼熟,但还是觉得计数很困难;T4 看完发现是数据结构,推了推很快会了树高做法&…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时,复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱,还是推荐引擎中海量的数据量,处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时,…

如何使用Python代码实现给GPU预加热

如何使用Python代码实现给GPU预加热 一、引言二、使用深度学习框架进行预加热2.1 TensorFlow预加热2.2 PyTorch预加热三、使用CUDA进行预加热四、预加热的效果评估与优化五、结论与展望在高性能计算和深度学习领域,GPU(图形处理器)已经成为不可或缺的加速工具。然而,在实际…

Leecode刷题C语言之统计不是特殊数字的数字数量

执行结果:通过 执行用时和内存消耗如下&#xff1a; bool isPrime(int n){if(n<2){return false;}for(int i2;i*i<n;i){if(n%i0){return false;}}return true; } int nonSpecialCount(int l, int r) {int psqrt(l);int q sqrt(r);int len r-l1;for(int i p; i <q;…

影响电阻可靠性的因素

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/C.电阻温度…

Typora-PicGo-OSS对象存储

Typora-PicGo-对象存储OSS 问题描述&#xff1a; 上次做完Gitee图床配置后&#xff0c;今天发现图床突然不能使用了&#xff0c;直到我查找到Gitee仓库变成私有后才发现做的图床被封禁了当前仓库因涉嫌外链滥用(RAW)&#xff0c;不支持设置为公开仓库&#xff0c;就导致我的笔…

ESP-KeyBoard:基于 ESP32-S3 的三模客制化机械键盘

概述 在这个充满挑战与机遇的数字化时代&#xff0c;键盘已经成为我们日常学习、工作、娱乐生活必不可少的设备。而在众多键盘中&#xff0c;机械键盘&#xff0c;以其独特的触感、清脆的敲击音和经久耐用的特性&#xff0c;已经成为众多游戏玩家和电子工程师的首选。本文将为…

nohup java -jar supporterSys.jar --spring.profiles.active=prod

文章目录 1、ps -ef | grep java2、kill 13713、ps -ef | grep java4、nohup java -jar supporterSys.jar --spring.profiles.activeprod &5、ps -ef | grep java1. 启动方式进程 1371进程 19994 2. 主要区别3. 可能的原因4. 建议 1、ps -ef | grep java rootshipper:~# p…

大公司如何实现打印机共享的?如何对打印机进行管控或者工号登录后进行打印?异地打印机共享的如何实现可以帮助用户在不同地理位置使用同一台打印机完成打印任务?

大公司如何实现打印机共享的&#xff1f;如何对打印机进行管控或者工号登录后进行打印&#xff1f;异地打印机共享的如何实现可以帮助用户在不同地理位置使用同一台打印机完成打印任务&#xff1f; 如果在局域网内&#xff0c;可以不需要进行二次开发&#xff0c;通过对打印机进…

数字反向输出

数字反向输出 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 小明听到广播里的数字后&#xff0c;总喜欢反着念给妈妈听。请聪明的你将小明听到的数字反向输出。 输入 输入为一个整型的四位数n 输出 …

Vue页面不显示也不报错是怎么回事?如何解决?

在使用Vue.js进行前端开发时&#xff0c;有时会遇到一种令人困惑的情况:页面既不显示任何内容&#xff0c;控制台也不报错。这种情况往往让开发者摸不着头脑&#xff0c;但不必过分担心&#xff0c;通过一系列的排查和调试步骤&#xff0c;我们可以找到问题的根源并解决它。 本…

利用 GitHub 和 Hexo 搭建个人博客【保姆教程】

利用 GitHub 和 Hexo 搭建个人博客 利用 GitHub 和 Hexo 搭建个人博客一、前言二、准备工作&#xff08;一&#xff09;安装 Node.js 和 Git&#xff08;二&#xff09;注册 GitHub 账号 三、安装 Hexo&#xff08;一&#xff09;创建博客目录&#xff08;二&#xff09;安装 H…

C#开发基础之借用dotnet CLI命令行参数的设计了解命令行构建用法

前言 在C#开发中&#xff0c;命令行参数是一种重要的机制&#xff0c;用于在程序启动时向应用程序传递配置或指令。无论是构建CLI工具还是配置化启动的桌面程序&#xff0c;掌握命令行参数的用法可以帮助我们设计更灵活的应用程序。 本文将详细介绍C#中命令行参数的基本用法、…

【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录

背景 Jetbrain IDE 支持生成 Test 类&#xff0c;其中选择JUnit5 和 JUnit&#xff0c;但是感觉这不是标准的单元测试&#xff0c;因为接口命名吧。 差异对比 两者生成的单测API名称同原API&#xff0c;没加test前缀的。使用差异主要表现在&#xff1a; setUp &#xff06; …

网页中调用系统的EXE文件,如打开QQ

遇到一个实际的问题&#xff0c;需要在网页中打开本地的某个工业软件。 通过点击exe文件就可以调用到程序。 比如双击qq的exe就可以启动qq的程序。 那么问题就变成了如何加载exe程序呢&#xff1f; 可以通过Java的 Process process Runtime.getRuntime().exec(command);通过…

FME教程:实现按属性字段合并图斑,同时合并属性字段值,对合并的属性值同步进行去重处理的案例思路方法

目录 一、实现效果 二、实现过程 1.读取数据 2.融合图斑 3.合并属性字段值&#xff0c;并去重 4.属性字段值排序、整理 5.输出成果 6.模板的使用 三、总结 今天介绍使用FME实现按属性合并图斑&#xff0c;同时合并属性字段值&#xff0c;并对合并的属性值同步进行去重…

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

【LeetCode热题100】栈

这道题一共记录了关于栈的5道题目&#xff1a;删除字符串中所有相邻重复项、比较含退格的字符串、基本计算器II、字符串解码、验证栈序列。 class Solution { public:string removeDuplicates(string s) {string ret;for(auto c : s){if(ret.size() 0 || c ! ret.back()) ret …