老男孩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 ...
随机推荐
- input依次输入密码
原理: 一个真正的可以输入的input框,opacity: 0,设定位层级:(视图不可见的) 再来6(n)个input,readyonly,用来显示,type为password,设置好样式:(视图可见 ...
- centos7上安装ELK
author:headsen chen data :2017-12-04 18:00:57 notice:created by chen himself and not allowed to cop ...
- 标准mysql(x64) Windows版安装过程
mysql x64不提供安装器,不提供安装器,不提供安装器-- 每次查英文文档有点慢,不够简. 5.7.6以后的64位zip包下载后解压是没有data目录的. 进入解压后的bin目录:(我用的powe ...
- 分享基于Qt5开发的一款故障波形模拟软件
背景介绍 这是一款采用Qt5编写的用于生成故障模拟波形的软件.生成的波形数据用于下发到终端机器生成对应的故障类型,用于培训相关设备维护人员的故障排查技能.因此,在这款软件中实现了故障方案管理.故障波形 ...
- Gauge----自动化测试工具
* Gauge是一个自动化测试工具,主要是通过.spec 文件指定执行的步骤,然后由Java代码去测试 安装: * 安装插件 Gauge--install-all *在IDEA中安装Gauge插件 基 ...
- 【数据库】mysql深入理解乐观锁与悲观锁
转载:http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时 ...
- Java代理模式之动态代理
动态代理类的源码是程序在运行期间由JVM根据反射等机制动态生成的,所以不存在代理类的字节码文件.代理角色和真实角色的联系在程序运行时确定! Java中有两种动态代理,一种是JDK自带的,另一种的CGL ...
- MIP (百度移动网页加速器)
前言:第一次用移动网页加速器,感觉好心情都被弄坏了.确实性能提高了不少,但是限制js,对于一些交互实现都成问题.MIP是Mobile Instant Pages的缩写,指百度移动网页加速器, 是一套应 ...
- 【Bootstrap】 bootstrap-select2下拉菜单插件
这次开发了个小TRS系统,虽然是很小,但是作为初心者,第一次用到了很多看起来洋气使用起来有相对简单的各种前端(主要是和bootstrap配合使用)组件.包括bootstrap-select2,boot ...
- lua循环,减少不必要的循环
lua中for循环的理解 for i=1, 10 do i = i+3 cclog("i=======%d",i) end 输出:4,5,6,7,8,9,10,11,12,13 相 ...