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

Python全栈(基础篇)——每日一练详解(day02~day05)

目录

day02 学生信息收集与展示系统

题目要求:

代码实现

代码讲解

day03 个人数字名片程序

题目要求:

代码实现

代码讲解

day04 学生信息管理系统

题目要求:

代码实现

代码讲解

day05 简易ATM机系统

题目要求:

代码实现

代码讲解

总结

📊 学习路径回顾

Day02 - 基础语法

Day03 - 格式化与运算

Day04 - 数据结构

Day05 - 项目实战


嘿,朋友们!👋

我是你们的学习伙伴,继续带着大家探索Python的奇妙世界!昨天我们深入学习了切片和迭代这两个强大的数据处理工具,今天我们要将前几天的每日一练讲解一下

如果你觉得我的讲解方式对你有帮助,或者喜欢我这种"把复杂变简单"的教学风格,欢迎来我的小窝坐坐~

我的技术博客:python全栈蛇行者-CSDN博客

那里有更多精心整理的学习笔记、实战项目,还有我在学习中踩过的坑和总结的经验。

专栏订阅也不容错过哦!我会持续更新这个Python全栈系列,从基础到实战,手把手带你走进编程的世界。订阅之后,新文章会第一时间推送到你面前,再也不用担心错过精彩内容啦!

好啦,让我们开始今天的学习之旅吧!

day02 学生信息收集与展示系统

题目要求:

请你创建一个学生信息收集与展示程序,要求使用今天学习的所有知识点。

程序需要完成以下功能:

  1. 信息收集:使用input()函数收集学生的以下信息:

    • 学生姓名(字符串)

    • 年龄(整数)

    • 身高(浮点数,单位:米)

    • 最喜欢的编程语言(字符串)

    • 是否喜欢Python编程(输入"是"或"否")

  2. 数据处理:

    • 将年龄从字符串转换为整数

    • 将身高从字符串转换为浮点数

    • 将是否喜欢Python转换为布尔值(输入"是"为True,否则为False)

  3. 信息展示:使用print()函数分块展示信息:

    • 使用多行字符串展示学生基本信息

    • 使用逗号分隔展示学习偏好

    • 使用变量拼接展示完整信息

  4. 类型检查:使用type()函数检查每个变量的数据类型并输出

代码实现

# day02每日一练
print("=== 学生信息收集系统 ===")
name = input('请输入学生姓名: ')
age = int(input('请输入年龄: '))
height = float(input('请输入身高(米):'))
love = input('请输入最喜欢的编程语言:')
yn = input('是否喜欢Python编程(是/否):')
​
print("=== 学生信息展示 ===")
print("【基本信息】")
print(f'姓名:{name}')
print('年龄:%d' %age)
print('身高:{:.2f}'.format(height))
​
yn = True if yn == '是' else '否'
​
print('【学习偏好】')
print('最喜欢的编程语言:%s' %love)
print('喜欢Python编程:',yn)
​
print('【数据类型检查】')
print(f'姓名 的数据类型:{type(name)}')
print(f'年龄 的数据类型:{type(age)}')
print(f'身高 的数据类型:{type(age)}')
print(f'最喜欢的编程语言 的数据类型:{type(love)}')
print(f'是否喜欢Python 的数据类型:{type(yn)}')

代码讲解

输入收集模块:

  • 使用print()函数显示系统标题,提供友好的用户界面

  • 通过input()函数依次收集学生的姓名、年龄、身高、编程语言偏好等信息

  • 对年龄和身高进行数据类型转换:int()将字符串转换为整数,float()将字符串转换为浮点数

  • 姓名和最喜欢的编程语言保持字符串类型,不需要转换

数据处理模块:

  • 使用条件表达式True if yn == '是' else '否'将用户的是/否回答转换为布尔值

  • 这种转换方式简洁高效,如果用户输入"是"则返回True,否则返回False

信息展示模块:

  • 使用三种不同的字符串格式化方法展示信息:

    • f-string格式化:f'姓名:{name}' - 现代Python推荐的方式

    • %格式化:'年龄:%d' %age - 传统格式化方法

    • format方法:'身高:{:.2f}'.format(height) - 更灵活的格式化

  • 分块展示信息,使用【】符号进行区块划分,提高可读性

类型检查模块:

  • 使用type()函数检查每个变量的数据类型

  • 通过f-string将类型信息嵌入到输出字符串中

  • 帮助用户理解Python中不同数据类型的表示方式


day03 个人数字名片程序

题目要求:

综合运用今天学习的所有知识,创建一个个人数字名片程序。

名片包含信息:

  • 基本信息:姓名、年龄、职业

  • 联系方式:电话(数字)、邮箱

  • 技能评分:编程能力(0-100)、英语水平(0-100)

  • 特殊编码:个人ID(用二进制、八进制、十六进制表示年龄)

功能要求:

  1. 使用三种字符串格式化方法分别展示不同部分的信息

  2. 计算技能平均分

  3. 将年龄转换为不同进制显示

  4. 使用各种运算符进行简单的数据分析

  5. 格式化输出美观的名片

代码实现

# day03每日一练
​
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
Occupation = input('请输入职业:')
telephone = input('请输入电话:')
email = input('请输入邮箱:')
# 编程能力
ProgrammingSkills = 85
English_proficiency = 78
​
print("="*25)
print('        个人数字名片')
print("="*25)
print(f'姓名:{name}')
print(f'年龄:{age}(二进制:{age:b},八进制:{age:o},十六进制:{age:x})')
print(f'职业:{Occupation}')
print(f'电话:{telephone}')
print(f'邮箱:{email}')
print(f'编程能力:{ProgrammingSkills}分,英语水平:{English_proficiency}分')
print(f'技能平均分:{(ProgrammingSkills + English_proficiency)/2:.1f}分')
print("="*25)

代码讲解

数据输入模块:

  • 使用input()函数收集用户的基本信息

  • 对年龄进行int()转换,确保后续的数值运算和进制转换能够正常进行

  • 技能评分在代码中直接赋值,实际应用中可以从用户输入获取

名片格式化模块:

  • 使用"="*25创建分隔线,简洁美观

  • 使用f-string格式化展示大部分信息,这是现代Python推荐的方式

  • 在年龄展示中使用了格式化说明符:

    • {age:b} - 将年龄转换为二进制表示

    • {age:o} - 将年龄转换为八进制表示

    • {age:x} - 将年龄转换为十六进制表示

技能计算模块:

  • 使用算术运算符+/计算技能平均分

  • 使用格式化:.1f保留一位小数,使输出更加专业

  • 展示了基本的数值运算在字符串格式化中的应用

输出美化模块:

  • 通过字符串重复操作符*创建统一的分隔线

  • 使用空格进行文本居中对齐

  • 整体布局清晰,信息层次分明


day04 学生信息管理系统

题目要求:

创建一个基础的学生信息管理系统,能够实现以下功能:

  1. 添加学生信息:输入学生姓名和成绩,将学生信息添加到系统中

  2. 查看学生信息:显示当前系统中所有学生的信息

  3. 成绩等级判断:根据学生成绩判断等级(优秀、良好、中等、及格、不及格)

  4. 系统统计:显示学生总数和平均分

具体要求:

  1. 使用列表存储学生信息,每个学生用元组表示(姓名,成绩)

  2. 使用条件判断实现成绩等级分类

  3. 使用成员运算符检查用户名是否存在

  4. 使用字符串方法验证输入的有效性

  5. 不使用函数、循环、字典等高级特性

代码实现

# day04每日一练
​
# 学生列表
Students = []
​
while True:print("""=== 学生信息管理系统 ===
1. 添加学生信息
2. 查看学生信息
3. 成绩等级判断
4. 系统统计
5. 退出
""")user_select = input('请输入你的选择:(1-5)')# 添加学生信息if user_select == '1':name = input('请输入学生姓名:')score = int(input('请输入学生成绩:'))# 添加到学生列表Students.append((name,score))print(f'添加成功:学生名称{name},分数{score}')# 查看学生信息elif user_select == '2':if Students:for Student in Students:print(f'姓名:{Student[0]},分数:{Student[1]}')else:print('暂无学生信息')# 成绩等级判断(优秀、良好、中等、及格、不及格)elif user_select == '3':name_look = input('请输入要查看的学生姓名:')if Students:for Student in Students:if name_look in Student:if Student[1] >= 90:Level = '优秀'elif Student[1] >= 80:Level = '良好'elif Student[1] >= 70:Level = '中等'elif Student[1] >= 60:Level = '及格'else:Level = '不及格'print(f'姓名:{name_look},成绩等级判断:{Level}')else:print('学生不存在')else:print('暂无学生信息')# 系统统计elif user_select == '4':# 计算平均分TotalScore = 0for Student in Students:TotalScore += Student[1]avg = TotalScore/len(Students)print(f'学生总数为:{len(Students)},平均分:{avg}')
​elif user_select == '5':print('欢迎下次使用.....')breakelse:print('请重新输入!')

代码讲解

数据结构设计:

  • 使用列表Students存储所有学生信息

  • 每个学生信息用元组(name, score)表示,确保数据不可变性

  • 这种设计简单有效,适合初学者理解列表和元组的基本用法

主循环控制:

  • 使用while True创建无限循环,直到用户选择退出

  • 通过多行字符串"""创建清晰的操作菜单

  • 使用if-elif-else结构处理用户的不同选择

功能模块详解:

  1. 添加学生信息:

    • 使用input()收集学生姓名和成绩

    • 通过Students.append((name,score))将学生信息添加到列表

    • 元组包装确保数据的完整性

  2. 查看学生信息:

    • 首先检查列表是否为空if Students:

    • 使用for循环遍历所有学生信息

    • 通过索引Student[0]Student[1]访问姓名和成绩

  3. 成绩等级判断:

    • 使用if-elif-else链式条件判断实现五级评分

    • 通过in运算符检查学生是否存在

    • 成绩分段:90+优秀,80+良好,70+中等,60+及格,其他不及格

  4. 系统统计:

    • 使用len(Students)获取学生总数

    • 通过循环累加计算总分,再求平均分

    • 展示基本的统计信息

错误处理:

  • 检查列表是否为空,避免空列表操作错误

  • 处理无效的用户输入,提供友好的提示信息

  • 确保程序的健壮性


day05 简易ATM机系统

题目要求:

创建一个简单的ATM机模拟系统,实现基本的银行账户操作功能。

基本功能要求:

  1. 用户登录:输入账号和密码进行登录验证

  2. 余额查询:查看当前账户余额

  3. 存款功能:向账户存入金额

  4. 取款功能:从账户取出金额(需验证余额)

  5. 退出系统:安全退出ATM系统

数据存储要求:

  • 使用字典存储用户账户信息

  • 每个用户包含:账号、密码、余额

  • 示例数据格式:

accounts = {'1001': {'password': '123456', 'balance': 5000},'1002': {'password': '111111', 'balance': 3000}
}

系统要求:

  • 使用while循环实现主菜单

  • 使用if-else进行条件判断

  • 实现基本的输入验证

  • 提供清晰的操作提示

代码实现

# day05每日一练
​
# 模拟数据库数据
accounts = {'1001': {'password': '123456', 'balance': 5000 ,'status':True, 'record':[]},'1002': {'password': '111111', 'balance': 3000 ,'status':True, 'record':[]}
}
# 密码错误计数
pwd_error_count = 0
# 最多输入错误密码次数
pwd_max_count = 5
# 主循环
while True:print("""
=== 欢迎使用ATM机系统 ===
​
请选择操作:
1. 用户登录
2. 用户注册
3. 退出系统""")user_select = input('请输入选择(1-3): ')# 登录模块if user_select == '1':user_name = input('请输入账号名:')# 判断用户是否存在if user_name in accounts:# 判断账号是否封禁if accounts[user_name]['status']:user_pwd = input('请输入账号密码:')# 判断密码是否正确if accounts[user_name]['password'] == user_pwd:print('登陆成功......')"""登陆成功后的逻辑处理"""while True:print("""
请选择操作:
1. 查看当前账号余额
2. 转账
3. 存款
4. 取款
5. 查看操作记录
6. 退出操作""")user_select_login = input('请输入需要的操作(1-6):')# 查看当前账号余额模块if user_select_login == '1':now_balance = accounts[user_name]['balance']print('当前余额为:%s' %now_balance)# 转账模块elif user_select_login == '2':now_balance = accounts[user_name]['balance']# 如果当前金额大于0可以进行转账if now_balance > 0:other_name = input('请输入对方账号名:')# 判断对方账号是否存在if other_name in accounts:# 判断对方账号是否封禁if accounts[other_name]['status']:transfer_balance = float(input('请输入转账金额:'))# 判断当前余额是否足够if transfer_balance > now_balance:print('转账金额大于当前剩余金额,操作失败')else:accounts[user_name]['balance'] -= transfer_balanceaccounts[other_name]['balance'] += transfer_balanceprint(f'成功向账号:{other_name},转账:{transfer_balance},剩余金额为:{accounts[user_name]['balance']}')# 将操作记录保存accounts[user_name]['record'].append(f'成功向账号:{other_name},转账:{transfer_balance},剩余金额为:{accounts[user_name]['balance']}')else:print('对方账号处于封禁状态,暂时无法进行转账')else:print('对方账号不存在')else:print('金额不足,无法进行转账操作')# 存款模块elif user_select_login == '3':deposit_select = float(input('请输入你需要存放的金额:'))accounts[user_name]['balance'] += deposit_selectprint(f'存款成功,存入金额为:{deposit_select},当前金额为:{accounts[user_name]['balance']}')# 将操作记录保存accounts[user_name]['record'].append(f'存款成功,存入金额为:{deposit_select}')# 取款模块elif user_select_login == '4':withdrawal_select = float(input('请输入你需要取出的金额:'))if 0 < withdrawal_select < accounts[user_name]['balance']:accounts[user_name]['balance'] -= withdrawal_selectprint(f'取款成功,取出金额为:{withdrawal_select},当前金额为:{accounts[user_name]['balance']}')# 将操作记录保存accounts[user_name]['record'].append(f'取款成功,取出金额为:{withdrawal_select}')else:print('金额不足,操作失败')# 查看操作记录模块elif user_select_login == '5':if accounts[user_name]['record']:for num,record_item in enumerate(accounts[user_name]['record'],1):print(f'{num}. {record_item}')else:print('暂无操作记录')# 退出操作模块elif user_select_login == '6':print('成功退出操作....')break# 处理其它情况模块else:print('选择无效,请重新输入!')
​else:pwd_error_count += 1if pwd_error_count < 5:print(f'密码错误,请重新输入,您还有{pwd_max_count - pwd_error_count}次机会,机会用完将封禁账号!')else:print('次数用完,账号封禁,请联系工作人员解封!')# 将账号的状态改为Falseaccounts[user_name]['status'] = False
​else:print('账号已封禁,请及时联系工作人员!')break
​else:print('账户不存在,请先注册!')# 注册模块elif user_select == '2':register_user_name = input('请输入用户名:')# 判断注册用户名是否存在if register_user_name not in accounts:register_user_pwd = input('请输入账号密码:')re_register_user_pwd = input('请再次输入密码:')# 判断两次密码是否一致if register_user_pwd == re_register_user_pwd:accounts[register_user_name] = {'password': register_user_pwd, 'balance': 0 ,'status':True}print('注册成功~')else:print('两次密码不一致,请重新注册!')else:print('用户名已存在,请更换用户名!')# 退出模块elif user_select == '3':print('欢迎下次使用~')break# 其他情况处理模块else:print('选择无效,请重新输入!')

代码讲解

数据结构设计:

  • 使用嵌套字典存储账户信息,结构清晰

  • 每个账户包含:密码、余额、状态、操作记录

  • 扩展了基础要求,增加了账户状态管理和操作记录功能

安全机制:

  • 密码错误计数器pwd_error_count记录尝试次数

  • 超过最大尝试次数pwd_max_count后锁定账户

  • 账户状态status字段控制账户可用性

多层菜单系统:

  • 外层循环处理登录/注册/退出选择

  • 内层循环处理登录后的各种银行操作

  • 使用嵌套的while True循环实现多级菜单

核心功能模块:

  1. 用户登录验证:

    • 检查用户名是否存在user_name in accounts

    • 验证账户状态accounts[user_name]['status']

    • 密码匹配验证和错误计数

  2. 银行操作功能:

    • 余额查询:直接读取并显示余额

    • 转账功能:验证对方账户、余额充足性,更新双方余额

    • 存款功能:增加账户余额,记录操作

    • 取款功能:验证余额充足,减少账户余额

    • 操作记录:使用列表存储交易历史,enumerate编号显示

  3. 用户注册:

    • 检查用户名唯一性register_user_name not in accounts

    • 密码确认机制,确保输入一致性

    • 初始化新用户数据

错误处理与用户体验:

  • 全面的输入验证和错误提示

  • 清晰的操作指引和状态反馈

  • 操作记录的保存和查询功能

  • 友好的用户界面和交互流程

这个ATM系统虽然简单,但涵盖了真实银行系统的基本功能,是学习字典操作、条件判断和循环控制的优秀实践案例。

总结

📊 学习路径回顾

通过前4天的系统练习,我们完成了从基础语法到项目实战的完整学习路径:

Day02 - 基础语法

  • 掌握输入输出、数据类型转换

  • 学会字符串格式化和类型检查

  • 建立基础的编程思维

Day03 - 格式化与运算

  • 深化字符串格式化技能

  • 掌握数值进制转换

  • 学会美化输出界面

Day04 - 数据结构

  • 熟练运用列表和元组

  • 掌握条件判断和循环控制

  • 构建完整的管理系统

Day05 - 项目实战

  • 应用字典存储复杂数据

  • 实现多层菜单和业务流程

  • 开发完整的业务系统

编程之路就像爬山,每一步都很重要,每个知识点都是通向顶峰的阶梯。不要急于求成,扎实掌握每个概念,多动手实践,你一定会成为优秀的Python开发者!

如果你在练习中遇到问题,或者有什么不明白的地方,欢迎来我的博客留言讨论。我们一起学习,一起进步!

下次见啦,继续加油!💪

http://www.dtcms.com/a/466494.html

相关文章:

  • SpringBoot中使用Redis(引入案例)
  • 舟山外贸建站公司多梦wordpress
  • Mybatis初始
  • 多模态 AI 与金融数据融合架构研究报告
  • 工作室网站免费建设北京网站改版有什么用
  • 哪家公司做网站企业网站客户案例
  • 网站制定报告长官夫人在捉鬼
  • 东莞网站开发培训哪里有微信朋友圈营销方案
  • 大疆无人机 + ai识别
  • openMVG_main_SfMInit_ImageListing
  • 无人机图传系统的功能解析与技术实现,无人机图像传输技术
  • 网站如何做外链2018桂林人论坛怎么注册
  • 邯郸wap网站制作4399曾经很火的网页游戏
  • 基于MATLAB的卫星导航解算系统实现
  • docker网络
  • 网站导航做多大合肥哪家做网站好
  • system表空间丢失部分文件恢复---惜分飞
  • 网站备案的好处有哪些网站优化软件哪个好
  • 计网学习01-概论
  • 如何利用强化学习技术提高智能聊天功能的准确性?
  • 上海wordpress建站广东富盈建设有限公司企业网站
  • 【xx】PCIe协议之Margning篇之 Pipe Spec 之 典型 magining sequence
  • 4、docker 容器
  • 全面解析java注解
  • 多模态大模型研究国庆简报【2025-10-1~2025-10-10】
  • promise的用法
  • 13年测试经验,性能测试-性能调优分析汇总,一篇汇总...
  • 网站开发组合 所有组合网站建设负责人证明
  • BFS解决最短路径问题
  • DNS 隐私防护与用户画像防范策略