老男孩python学习之作业一购物小程序

时间:2021-09-05 07:50:10

想学编程由来已久

始终没有个结果,痛心不已

如今再次捡起来,望不负期望,不负岁月

......一万字的废话......

先介绍一下我的自学课程吧

“路飞学城”的《python开发21天必备》

屌丝一个嘛,所以找了免费的课程

课程虽然免费,做的出奇好,佩服,尤其是课间鸡汤,屌的一笔

特别期望可以报个付费的玩玩,那一定乐趣无穷啊

决定学习python,也是因为它和人工智能沾上了,而且入门简单

所以,不要怕

老男孩python学习之作业一购物小程序

老男孩python学习之作业一购物小程序

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

老男孩python学习之作业一购物小程序

  1. 要用到列表的创建,循环,打印列表索引和,为列表添加指定元素
  2. Input()函数的使用,与用户的交互,判断输入的内容是数字,字符串或者其他
  3. 变量的赋值和计算
  4. 操作符的使用,也可以使用格式化操作符
  5. 循环条件语句,while ,if  ,for ,break结束语句

是不是很简单?

做一下吧!?要不再加一个需求,那样才有趣

老男孩python学习之作业一购物小程序

  • l 用户可以选择将购物车里的商品按照已购买列表编码删除任意一个商品
  • l 用户可以一直删除,用户不想删除了,可以选择继续购物,退出时,打印购物车商

品列表

赖皮,这分明是两个要求吗?

就这样,我从晚上八点玩到凌晨两点,没搞定,呵呵哒,然后十点起床,十一点半,搞定!

一共用了差不多半天,可能是中间睡了一觉,灵感就来了,大脑真神奇,你要给他时

间,他会给你答案,这中间就是不断地尝试,错误,寻找错误,在尝试,错误,不断地寻

找,不断地修改。我想说的就是,在你到达成功的路上不要放弃,相信你自己,可以做到的。

老男孩python学习之作业一购物小程序

  1. 变量的修改,删除指定元素
  2. 多层循环嵌套(困难在这,难为死小白了,但是灵感来了,就觉得很简单,特别好写)

下面,来看看这个困难到底是什么吧?建议:如果你还没有练习过,在读完这句话之后,先去

尝试自己解决,在十个小时后还不能解决。在来看下面的方案,这样对你才是最大的帮助!

>>确

>>定

>>要

>>看

>>了

>>吗

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>确

>>定

>>要

>>看

>>了

>>吗

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>确

>>定

>>要

>>看

>>了

>>吗

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>are

>>you

>>sure

>>?

>>

>>

>>

老男孩python学习之作业一购物小程序

最终解决方案:每一层while 循环设立一个flag,在需要结束的同层循环下去设定flag的反值

看了,是不是很简单,能想出来,能实现还是很快乐的。不知道有没有更好的方法,肯定有,但是实力有限了。

老男孩python学习之作业一购物小程序

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.工资输入错误,如:不是数字

老男孩python学习之作业一购物小程序

下面分享出来,我在错误中的学习。有些特别幼稚,有些是新知识,希望可以帮助到你

在错误中学习:

  1. 好多次错将 == 当做 = 使用,浪费了很多时间;
  2. 标志位只有两种形态,Ture 和Flase 。错误的将标志位flag=1.这样其实等同于flag=Ture,Flase和Ture是bool类型,而数字1是int类型,浪费了很多时间
  3. 不知道为什么没有按照自己的想法运行,最好能够把相关代码Debug一下,不要觉得很麻烦,其实这样比你自己一遍遍运行,看代码方便的多,可以省下很多眼力,体力和时间
  4. shift+Tab  取消缩进(百度到的)
  5. 循环应该是一个可以完成的闭环,刚开始创建了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("输入错误!")