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

别再死记硬背了!用Python写个购物车和登录系统,新手也能秒懂if/else

别再死记硬背了!用Python写个购物车和登录系统,新手也能秒懂if/else

刚学Python时,你是否曾被一堆if/else和数据类型转换搞得晕头转向?那些孤立的语法练习就像背单词表,记住了却不知道如何用。今天,我们将通过构建购物车系统用户登录系统这两个真实项目,让你在动手实践中自然掌握核心语法。

1. 从零开始构建购物车系统

购物车是电商平台的标配功能,也是理解基础语法的绝佳案例。我们以水果店为例,实现一个能自动计算总价的小程序。

1.1 处理用户输入与类型转换

用户输入永远是字符串类型,这是新手最容易忽略的点。看看这段代码:

apple_price = 6.6 # 苹果单价 orange_price = 5 # 橘子单价 apple_weight = input("请输入苹果斤数:") # 返回字符串 orange_weight = input("请输入橘子斤数:")

直接相乘会报错!必须转换为数值类型。但该用int()还是float()

  • int():适合整数输入,遇到小数会报错
  • float():兼容整数和小数,是更安全的选择
# 最佳实践:统一使用float转换 apple_weight = float(input("请输入苹果斤数:")) orange_weight = float(input("请输入橘子斤数:"))

1.2 实现价格计算逻辑

计算总价需要组合使用多种运算符:

total = apple_price * apple_weight + orange_price * orange_weight

这里涉及:

  • *乘法运算符
  • +加法运算符
  • 运算符优先级(先乘后加)

提示:商业场景中金额通常保留两位小数,可用round(total, 2)f"{total:.2f}"格式化

完整代码示例:

# 定义单价 apple_price = 6.6 orange_price = 5 # 获取用户输入并转换 apple_weight = float(input("请输入苹果斤数:")) orange_weight = float(input("请输入橘子斤数:")) # 计算并打印结果 total = apple_price * apple_weight + orange_price * orange_weight print(f"苹果:{apple_weight}斤,橘子:{orange_weight}斤,总价:{total:.2f}元")

2. 开发用户登录验证系统

登录系统是理解条件判断的经典案例。我们将实现一个包含验证码、用户名和密码校验的完整流程。

2.1 基础验证结构

最简单的登录验证只需要判断用户名和密码:

username = "admin" password = "123456" input_user = input("用户名:") input_pwd = input("密码:") if input_user == username and input_pwd == password: print("登录成功") else: print("用户名或密码错误")

这里的关键点:

  • ==比较运算符
  • and逻辑运算符(两个条件需同时满足)

2.2 添加验证码校验

为增强安全性,我们增加验证码环节,形成嵌套判断结构

correct_code = "qwer" # 预设验证码 input_code = input("验证码:") if input_code == correct_code: # 验证码正确才检查账号密码 input_user = input("用户名:") input_pwd = input("密码:") if input_user == username and input_pwd == password: print("登录成功") else: print("用户名或密码错误") else: print("验证码错误")

这种先验证码后账号的分步验证,是实际开发中的常见模式。

2.3 处理边界情况

完善的登录系统还需要考虑:

  • 大小写敏感问题
  • 去除用户输入的首尾空格
  • 多次尝试限制

改进后的代码:

input_code = input("验证码:").strip() # 去除首尾空格 if input_code.lower() == correct_code.lower(): # 忽略大小写 input_user = input("用户名:").strip() input_pwd = input("密码:") if (input_user == username and input_pwd == password): print("登录成功") else: print("用户名或密码错误") else: print("验证码错误")

3. 条件判断的进阶应用

掌握了基础if/else后,我们来看几个实用技巧。

3.1 多重条件判断(elif)

年龄分段是个很好的练习:

age = int(input("请输入年龄:")) if age < 0: print("年龄不能为负数") elif age <= 17: print("青少年") elif age <= 34: print("青年") elif age <= 59: print("中年") else: print("老年")

关键点:

  • elif是"否则如果"的缩写
  • 条件判断的顺序很重要(必须从小到大或从大到小)
  • else捕获所有未满足的情况

3.2 复合逻辑条件

判断闰年的案例展示了复杂逻辑的组合:

year = int(input("请输入年份:")) if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0): print(f"{year}年是闰年") else: print(f"{year}年不是闰年")

这里使用了:

  • %取模运算符
  • orand逻辑运算符
  • 括号明确运算优先级

4. 项目实战:公交乘车系统

让我们用嵌套if实现一个公交乘车逻辑:

has_ticket = True # 是否持票 has_seat = False # 是否有座 if has_ticket: print("可以上车") if has_seat: print("找到座位坐下") else: print("无座,请站稳扶好") else: print("请先购票")

这个案例清晰地展示了:

  • 主条件(是否持票)
  • 次级条件(是否有座)
  • 每种情况的处理方式

5. 成绩评估系统开发

最后,我们实现一个成绩评估系统,综合运用多种技能:

# 输入验证函数 def get_valid_score(subject): while True: try: score = float(input(f"请输入{subject}成绩(0-100):")) if 0 <= score <= 100: return score print("成绩必须在0-100之间") except ValueError: print("请输入有效数字") # 获取三门成绩 chinese = get_valid_score("语文") math = get_valid_score("数学") english = get_valid_score("英语") # 计算平均分 average = (chinese + math + english) / 3 # 评估等级 if average < 60: grade = "不及格" elif average < 80: grade = "及格" elif average < 90: grade = "良好" else: grade = "优秀" print(f"平均分:{average:.1f},评估结果:{grade}")

这个案例包含了:

  • 输入验证(确保成绩在0-100之间)
  • 异常处理(防止非数字输入)
  • 浮点数运算
  • 多条件分级评估
http://www.jsqmd.com/news/756215/

相关文章:

  • 瑞祥商联卡怎么变现?盘点常用的三种方案 - 团团收购物卡回收
  • Krita AI Diffusion:数字绘画的革命性智能辅助工具
  • 为什么选择大润发购物卡快速回收?线上平台教你一站式操作! - 团团收购物卡回收
  • 掌握瑞祥商联卡变现的正确打开方式,避免踩雷! - 团团收购物卡回收
  • WinForm控件布局避坑指南:当AutoSize遇上Anchor和Dock,你的窗体还扛得住吗?
  • 2026年低升糖食物品牌推荐,一萱久降堂上榜 - mypinpai
  • 基于UI自动化的AI消息转发工具:Copaw与微信本地集成方案
  • 3分钟搞定NCM文件转换:网易云音乐加密格式完全解密指南
  • WarcraftHelper:5分钟搞定魔兽争霸3卡顿闪屏的终极解决方案
  • 东北财经大学考研辅导班推荐:排名深度评测与选哪家分析 - michalwang
  • 实战避坑:用STM32H7的SPI驱动OLED屏,从CubeMX配置到DMA收发一气呵成
  • 别再死记硬背了!用状态机模型轻松理解蓝牙BLE的链路层工作流程
  • 告别轮询!用STM32F407的EXTI中断高效读取GT911触摸坐标
  • SpringBoot项目如何优雅地给客户软件加个“试用期”?TrueLicense实战避坑指南
  • FPGA新手避坑指南:用Verilog手搓一个I2C控制器驱动EEPROM(附完整代码)
  • Sunshine游戏串流指南:零基础打造你的个人游戏云主机
  • 你以为在驯化AI,其实AI在等你驯化完自己
  • 用YOLOv8姿态评估模型,5分钟搞定工业工件圆心定位(附完整数据集制作与ONNX部署代码)
  • TF-IDF改造应用于LLM任务理解评估的方法与实践
  • Bili2text终极指南:3分钟学会B站视频转文字,学习效率提升10倍!
  • 洛谷B4050[GESP202409 五级] 挑战怪物
  • 边缘计算与AI在生态监测中的创新应用
  • SAP MM模块实战:从MM01创建物料到MIRO发票校验,一条龙保姆级教程(含避坑点)
  • 别再手动拖拽了!用VBA宏一键批量插入并自动匹配Excel单元格图片(附完整代码)
  • 魔兽世界3冰封王座
  • WSL2 + OpenGL 开发环境搭建保姆级教程:从GLFW、GLAD配置到第一个窗口程序
  • Hitboxer:5大核心功能彻底解决游戏键盘输入冲突的终极工具
  • 5个实用技巧:用Windows Cleaner彻底告别C盘爆红烦恼
  • 西北农林科技大学考研辅导班推荐:排名深度评测与选哪家分析 - michalwang
  • 【企业管理】第十三篇 企业增长飞轮模型01