老男孩python学习之作业一购物小程序
想学编程由来已久
始终没有个结果,痛心不已
如今再次捡起来,望不负期望,不负岁月
......一万字的废话......
先介绍一下我的自学课程吧
“路飞学城”的《python开发21天必备》
屌丝一个嘛,所以找了免费的课程
课程虽然免费,做的出奇好,佩服,尤其是课间鸡汤,屌的一笔
特别期望可以报个付费的玩玩,那一定乐趣无穷啊
决定学习python,也是因为它和人工智能沾上了,而且入门简单
所以,不要怕


就这,感觉很简单嘛,呵呵大

- 要用到列表的创建,循环,打印列表索引和,为列表添加指定元素
- Input()函数的使用,与用户的交互,判断输入的内容是数字,字符串或者其他
- 变量的赋值和计算
- 操作符的使用,也可以使用格式化操作符
- 循环条件语句,while ,if ,for ,break结束语句
是不是很简单?
做一下吧!?要不再加一个需求,那样才有趣

- l 用户可以选择将购物车里的商品按照已购买列表编码删除任意一个商品
- l 用户可以一直删除,用户不想删除了,可以选择继续购物,退出时,打印购物车商
品列表
赖皮,这分明是两个要求吗?
就这样,我从晚上八点玩到凌晨两点,没搞定,呵呵哒,然后十点起床,十一点半,搞定!
一共用了差不多半天,可能是中间睡了一觉,灵感就来了,大脑真神奇,你要给他时
间,他会给你答案,这中间就是不断地尝试,错误,寻找错误,在尝试,错误,不断地寻
找,不断地修改。我想说的就是,在你到达成功的路上不要放弃,相信你自己,可以做到的。

- 变量的修改,删除指定元素
- 多层循环嵌套(困难在这,难为死小白了,但是灵感来了,就觉得很简单,特别好写)
下面,来看看这个困难到底是什么吧?建议:如果你还没有练习过,在读完这句话之后,先去
尝试自己解决,在十个小时后还不能解决。在来看下面的方案,这样对你才是最大的帮助!
>>确
>>定
>>要
>>看
>>了
>>吗
>>?
>>que
>>ding
>>yao
>>kan
>>le
>>ma
>>?
>>确
>>定
>>要
>>看
>>了
>>吗
>>?
>>que
>>ding
>>yao
>>kan
>>le
>>ma
>>?
>>确
>>定
>>要
>>看
>>了
>>吗
>>?
>>que
>>ding
>>yao
>>kan
>>le
>>ma
>>?
>>are
>>you
>>sure
>>?
>>
>>
>>

最终解决方案:每一层while 循环设立一个flag,在需要结束的同层循环下去设定flag的反值
看了,是不是很简单,能想出来,能实现还是很快乐的。不知道有没有更好的方法,肯定有,但是实力有限了。

1.交互,输入工资(有输入)
1.1.工资输入正确
2.查看商品列表
2.1.交互,选择商品列表编号(有输入)
3.添加商品到购物车
3.1.不要了,退出购物(输入Q退出)
4.交互,选择结账退出/删除商品(有输入)
5.结账退出(输入s退出)
5.1删除商品(输入d)
6.交互,选择删除购物车商品(有输入)
7.1.删除选中的商品
7.2.不删了,退出(输入Q)
8.交互,选择是结账还是继续购买商品(有输入)
9.进入选择商品循环2.1
9.1.结账退出(输入s退出)
6.1.购物车空了,请先购买
7.进入选择商品循环2.1
6.2.输入错误,请重新输入
4.1输入错误
2.2.商品价格大于工资,重新输入
2.3.输入编码不对,如:不在列表中
1.2.工资输入错误,如:不是数字

下面分享出来,我在错误中的学习。有些特别幼稚,有些是新知识,希望可以帮助到你
在错误中学习:
- 好多次错将 == 当做 = 使用,浪费了很多时间;
- 标志位只有两种形态,Ture 和Flase 。错误的将标志位flag=1.这样其实等同于flag=Ture,Flase和Ture是bool类型,而数字1是int类型,浪费了很多时间
- 不知道为什么没有按照自己的想法运行,最好能够把相关代码Debug一下,不要觉得很麻烦,其实这样比你自己一遍遍运行,看代码方便的多,可以省下很多眼力,体力和时间
- shift+Tab 取消缩进(百度到的)
- 循环应该是一个可以完成的闭环,刚开始创建了4个并列的循环,想当然的以为可以通过jump(跳跃)解决问题,然而并不能。
写累了,上代码
100都累的不行,很多重复的代码,如果可以用定义函数,整个代码就会简介很多,写好了,再发上来吧
goods_list = [['中性笔',5],['小米手机',1799],['NIKE鞋',488],['衬衫',277],['表',277],['包',399],['电脑',7999]]
choices_list = [] #定义购物车
flag_m = True
flag = True
flag_2 = True
flag_3 = True
flag_4 = True while flag_m == True:
your_money = input("请输入你的工资>>")
if your_money.isdigit():
your_money= int(your_money) while flag == True:
flag_2 = True #重新确定标志位,开始购物循环
flag_3 = True
flag_4 = True
print('------商品列表------') #打印商品列表
for index, i in enumerate(goods_list):
print(index, i[0], '', i[1])
print('------- END -------')
choice = input('请输入您要购买的商品编号(退出输入q)>>')
if choice.isdigit(): #判断用户输入是不是数字
if 0 <= int(choice) < len(goods_list): #判断是数字,并且数字在列表范围内
if your_money >= goods_list[int(choice)][1]: #判断用户工资的钱够不够买选择的商品
choices_list.append(goods_list[int(choice)]) #加入购物车
your_money =your_money- goods_list[int(choice)][1] #扣款
print('您的余额:',your_money) #显示余额
print('------购物车------')
for index,i in enumerate(choices_list):
print(index, i[0], '', i[1])
else: #钱不够,提示重新选择
print('您的余额不足,请重新选择!')
else: #数字不对,提示重新输入
print('您输入的编号不在列表中,请重新输入。')
elif choice == 'q': #退出购物循环
if len(choices_list) > 0:
print('您的余额:',your_money)
print('------购物车------')
for index, i in enumerate(choices_list):
print(index, i[0], '', i[1])
print('-------- END --------')
while flag_2 == True: #进入结账或者删除商品循环
s = input('结账(s)/去掉几个(d)')
if s == 's':
print('感谢惠顾,欢迎下次再来!')
flag = False #终止所有循环
flag_2 = False
flag_3 = False
flag_4 = False
flag_m = False
elif s == 'd': #进入删除商品循环
while flag_3 == True:
if len(choices_list) > 0:
print('您的余额:', your_money) # 显示余额
print('------购物车------')
for index, i in enumerate(choices_list):
print(index, i[0], '', i[1])
del_choice = input('请输入您不想要的商品的编号(输入q退出)>>')
if del_choice.isdigit():
del_choice = int(del_choice)
if 0 <= del_choice < len(choices_list):
your_money = your_money + choices_list[del_choice][1]
del choices_list[del_choice]
else:
print('您输入的编号不在列表中,请重新输入。')
elif del_choice == 'q': #退出删除商品循环
if len(choices_list) > 0:
print('您的余额:', your_money)
print('------购物车------')
for index, i in enumerate(choices_list):
print(index, i[0], '', i[1])
print('-------- END --------')
while flag_4 == True: #进入结账或者继续购买循环
s_0 = input('结账(s)/继续购买(b)')
if s_0 == 's':
print('感谢惠顾,欢迎下次再来!')
flag = False #终止所有循环
flag_2 = False
flag_3 = False
flag_4 = False
flag_m = False
elif s_0 == 'b': #终止内循环,开始第一层购买循环
flag = True
flag_2 = False
flag_3 = False
flag_4 = False
# break
else:
print('输入错误!')
else:
print('请输入正确的商品列表编号')
else:
print('您的购物车已经空了,请添加商品!')
flag_2 = False
flag_3 = False
break else:
print('输入错误')
else:
print('您没有购物')
print('您的余额:', your_money)
flag_m = False
flag = False
else: #其他输入提示
print('请输入正确的商品列表编号')
else:
print("输入错误!")
老男孩python学习之作业一购物小程序的更多相关文章
- 老男孩python学习之作业二---三级菜单
因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...
- python学习day4--python基础--购物小程序
'''购物小程序:用户启动时先输入工资用户启动程序后打印商品列表允许用户选择购买商品允许用户不断购买各种商品购买时检测余额是否够,如果够直接扣款,否则打印余额不足允许用户主动退出程序,退出时打印已购商 ...
- Python学习day5作业
目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...
- 记录Python学习中的几个小问题
记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...
- Python 练习冊,每天一个小程序
Python 练习冊,每天一个小程序 说明: Github 原文地址: 点击打开链接 Python 练习冊.每天一个小程序.注:将 Python 换成其它语言,大多数题目也试用 不会出现诸如「 ...
- 20180821 Python学习笔记:如何获取当前程序路径
20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...
- 京东购物小程序 | Taro3 项目分包实践
背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...
- Python编写购物小程序
购物车要求: 用户名和密码存放于文件中 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够 ...
- 用python 实现录入学生作业情况的小程序
写一个录入学生作业情况的一个程序 1.查看学生作业情况 2.录入学生作业情况 3.可以让输入3次,需要为空的情况 homeworks = { ‘张流量’: {‘2018.3.22’:”未交”,’201 ...
随机推荐
- 处理win7任务栏通知区域图标异常问题
故障现象:安装的某软件比如QQ,应用程序运行图标始终没有在win7任务栏通知区域显示出来,经观查发现win7任务栏通知区域有几个已删除应用的图标出现,应该是有故障了. 故障现象一:已经卸载的程序,还在 ...
- 笔记:MyBatis Mapper XML文件详解 - Cache
缓存(Cache) 从数据库中加载的数据缓存到内存中,是很多应用程序为了提高性能而采取的一贯做法.MyBatis对通过映射的SELECT语句加载的查询结果提供了内建的缓存支持.默认情况下,启用一级缓存 ...
- canvas---HTML5新特性
画圆及填充文字<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- Day3---------Linux操作系统目录结构
一.Linux系统文件树状结构 "/" 根目录 "." 当前目录 .. 父目录,既上一层目录 pwd 显示当前目录路径 ls. = ls = ls/ 显示当前目 ...
- 控制input只能输入数字和两位小数
<input type="text" name="je" onkeyup="clearNoNum(this)" /> funct ...
- selenium2自动化测试学习笔记(一)
从这周开始学习自动化测试,采用selenium2,目标是在本月学习到appium,并测试公司的真实APP项目. 系统环境:win10 语言:python3.6.4 工具:selenium2 IDE:p ...
- Jquery点击除了指定div元素其他地方,隐藏该div
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script ty ...
- linux dd使用记录
dd if=/dev/sda of=/dev/sdb bs=10M Linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100 ...
- [BZOJ 1190][HNOI2007]梦幻岛宝珠
1190: [HNOI2007]梦幻岛宝珠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1057 Solved: 611[Submit][Stat ...
- Struts2学习笔记一 简介及入门程序
Struts2是一个基于MVC设计模式的web应用框架,它本质上相当于一个Sevlet.是Struts1的下一代产品,是在structs1和WebWork技术的基础上进行合并后的全新框架(WebWor ...