当前位置: 首页 > news >正文

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   # 如果找到,设置标志位为Truecart.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}")

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

相关文章:

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

目录 实战题 1、“千年虫”是什么虫? 2、模拟京东购物流程 3、模拟12306火车票订票流程 4、模拟手机通讯录 实战题 1、“千年虫”是什么虫? 要求:已知一个列表中存储的是员工的出生年份 [88,89,90,98,00,99] 由于时间比较久,出生的年份均为2位整数&#xf…...

飞凌嵌入式T113-i开发板RISC-V核的实时应用方案

随着市场对嵌入式设备的功能需求越来越高,集成了嵌入式处理器和实时处理器的主控方案日益增多,以便更好地平衡性能与效率——实时核负责高实时性任务,A核处理复杂任务,两核间需实时交换数据。然而在数据传输方面,传统串…...

基于Java后台实现百度、高德和WGS84坐标的转换实战

目录 前言 一、需求的缘由 1、百度坐标拾取 2、高德坐标拾取 3、不同地图的坐标展示 二、后端坐标偏移转换处理 1、相关类库介绍 2、coordtransorm类图介绍 3、后台实际转换 三、总结 前言 在当今数字化时代,地理位置信息的精确性和实时性对于各种应用至…...

SQL,力扣题目1635,Hopper 公司查询 I

一、力扣链接 LeetCode_1635 二、题目描述 表: Drivers ---------------------- | Column Name | Type | ---------------------- | driver_id | int | | join_date | date | ---------------------- driver_id 是该表的主键(具有唯一值的列)。 该表的每一行…...

Android 分区相关介绍

目录 一、MTK平台 1、MTK平台分区表配置 2、MTK平台刷机配置表 3、MTK平台分区表配置不生效 4、Super分区的研究 1)Super partition layout 2)Block device table 二、高通平台 三、展锐平台 四、相关案例 1、Super分区不够导致编译报错 经验…...

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…...

信息安全管理与评估赛项(网络安全)--应急响应专项训练

web1 题目来源:https://mp.weixin.qq.com/s/89IS3jPePjBHFKPXnGmKfA 题目 1.攻击者的shell密码2.攻击者的IP地址3.攻击者的隐藏账户名称4.攻击者挖矿程序的矿池域名(仅域名)5.有实力的可以尝试着修复漏洞靶机 用户:administrator密码:Zgsfadmin.com题解 攻击者…...

ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想

目录 一些常见的设计思想以及基于LSM树的LevelDB是如何利用这些设计思想优化存储、检索效率的。 几种常见的设计思想 索引和数据分离减少磁盘IO读写分离分层思想 LevelDB的设计思想 读写分离设计分层设计与延迟合并LRU缓存加速检索 几种常见设计思想 索引与数据分离 索引…...

使用 FFmpeg 提取音频的详细指南

FFmpeg 是一个开源的多媒体处理工具,支持视频、音频的编码、解码、转换等多种功能。通过 FFmpeg,提取视频中的音频并保存为各种格式非常简单和高效。这在音视频剪辑、媒体处理、转码等场景中具有广泛的应用。 本文将详细讲解如何使用 FFmpeg 提取音频&a…...

中国省级新质生产力发展指数数据(任宇新版本)2010-2023年

一、测算方式:参考C刊《财经理论与实践》任宇新(2024)老师的研究,新质生产力以劳动者劳动资料劳动对象及其优化组合的质变为 基本内涵,借 鉴 王 珏 和 王 荣 基 的 做 法构建新质生产力发展水平评价指标体系如下所示&a…...

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式? 建造者模式是一种创建型设计模式,它用于一步步地构建一个复杂对象,同时将对象的构建过程与它的表示分离开。简单来说: 它将复杂对象的“建造步骤”分成多部分,让我们可以灵活地控制这些步骤。通过…...

Python 快速入门(上篇)❖ Python基础知识

Python 基础知识 Python安装**运行第一个程序:基本数据类型算术运算符变量赋值操作符转义符获取用户输入综合案例:简单计算器实现Python安装** Linux安装: yum install python36 -y或者编译安装指定版本:https://www.python.org/downloads/source/ wget https://www.pyt…...

string接口的模拟实现

文章目录 一. string底层逻辑演示声明和定义分开 二. size()三. operator[]四. 迭代器四. const迭代器五. 预留空间(reserve)六. 尾插一个字符push_back七. 尾插一个字符串append八. operator九. operator 一. string底层逻辑 (1)为了和库里面…...

sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面

sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面 前言 -r 等效 -E , 启用扩展正则表达式 -E是新叫法,更统一,能增强可移植性 , 但老系统,比如 CentOS-7 的 sed 只能用 -r ### Ubuntu24.04-E, -r, --regexp-extendeduse extended regular expressions in the script(fo…...

Verilog HDL可综合与不可综合语句

目录 什么是逻辑综合 可综合语句 不可综合语句 逻辑综合建模建议 综合流程 什么是逻辑综合 所谓逻辑综合就是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。 标准单元库(工艺库)可以包含简单的…...

tomcat 后台部署 war 包 getshell

1. tomcat 后台部署 war 包 getshell 首先进入该漏洞的文件目录 使用docker启动靶场环境 查看端口的开放情况 访问靶场:192.168.187.135:8080 访问靶机地址 http://192.168.187.135:8080/manager/html Tomcat 默认页面登录管理就在 manager/html 下&#xff0c…...

网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析1

文章目录 1、RAID6配置指南(大致步骤)2、注意事项3、截图和视频 网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操 RAID6是一种在存储系统中实现数据冗余和容错的技术,其最多可以容忍两块磁盘同时损坏而不造成数据丢失。RAID…...

前端面试题大汇总:React 篇

基础知识 1. 什么是 React?它的主要特点是什么? React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它主要用于构建单页应用程序(SPA)和复杂的用户界面。React 的主要特点包括: 组件…...

【prism】遇到一个坑,分享!

背景 我通用prism的方式写了一个弹窗,弹窗绑定一个 Loaded 事件,但是Loaded事件一直不触发!!! 具体过程 我的loaded事件也是通过命令的方式绑定的: <i:Interaction.Triggers><i:EventTrigger EventName="Loaded...

Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架

Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架 WebUI接口框架使用的工具...

智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代

Rokid Jungle 2024合作伙伴暨新品发布会于近日隆重举行&#xff0c;标志着AR眼镜跑步进入消费时代&#xff0c;更预示着ARAI技术融合的新篇章。智象未来&#xff08;HiDream.ai&#xff09;&#xff0c;作为多模态生成式人工智能技术的领跑者&#xff0c;与Rokid的深度合作&…...

element dialog 2层弹窗数据同步问题

注意&#xff1a;本帖为公开技术贴&#xff0c;不得用做任何商业用途 element dialog 2层弹窗数据同步问题 如果嵌套dialog&#xff0c;也就是多层dialog嵌套 2个input&#xff0c;key用同样的值 会导致内外2层dialog&#xff0c;用相同key值的input会数据同步 原因如下&a…...

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典&#xff0c;右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本&#xff0c;很灵活&#xff0c;这里先介绍第一个版本&#xff0c;也是原始版本 Shingling one-hot …...

要素市场与收入分配

生产要素与家庭收入 生产要素&#xff1a;企业用于生产产品或劳务的最初投入&#xff0c;主要分为三类&#xff1a; 劳动&#xff1a;工人的时间和技能 土地&#xff1a;代指自然资源 资本&#xff1a;指的是货币形式的资本&#xff0c;可以供企业用来购置厂房、设备等资本品…...

Web3的核心技术:区块链如何确保信息安全与共享

在互联网不断迭代的进程中&#xff0c;Web3被视为下一代互联网的核心发展方向&#xff0c;其目标是构建更加开放、安全、去中心化的数字生态。在这一过程中&#xff0c;区块链作为核心技术&#xff0c;为信息安全与共享提供了全新解决方案。本文将深入探讨区块链如何在Web3中实…...

2025蓝桥杯(单片机)备赛--扩展外设之UART1的原理与应用(十二)

一、串口1的实现原理 a.查看STC15F2K60S2数据手册: 串口一在590页,此款单片机有两个串口。 串口1相关寄存器: SCON:串行控制寄存器(可位寻址) SCON寄存器说明: 需要PCON寄存器的SMOD0/PCON.6为0,使SM0和SM1一起指定工作模式,这里选择工作模式1,REN位置1,允许接受, …...

Js中的常见全局函数

文章目录 1、encodeURI、decodeURI2、encodeURIComponent、decodeURIComponent3、parseInt4、parseFloat5、String6、Number7、Boolean8、isNaN、Number.isNaN()9、JSON10、toString Js内置了一些函数和变量&#xff0c;全局都可以获取使用&#xff08;本文归纳非构造函数作用的…...

MySQL连接查询之自连接

自连接 相当于等值连接,只不过是自己连接自己,不像等值连接是两个不同的表之间的 案例 查询员工名和他的上司的名字 select e.last_name,m.last_name from employees e, employees m #把同一张表当成两张不同表 where e.manager_id m.employee_id;...

Python 爬虫 (1)基础 | 基础操作

一、基础操作 1、快速构建一个爬虫 ConvertCurl&#xff1a; https://curlconverter.com/选择URL&#xff0c;点击右键&#xff0c;选择 Copy >> Copy as cURL(bash) 安装JS环境&#xff1a;https://www.jb51.net/python/307069k7q.htm...

JAVA八股与代码实践----如何为springboot设置Servlet容器为jetty,jetty的优点是什么?

1、实践 排除原来的springboot-web依赖&#xff08;默认是tomcat&#xff09;&#xff0c;加入jetty的依赖 <dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…...