想学编程由来已久

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

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

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

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

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

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

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

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

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

所以,不要怕

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

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

是不是很简单?

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

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

品列表

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

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

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

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

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

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

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

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

>>确

>>定

>>要

>>看

>>了

>>吗

>>?

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

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

在错误中学习:

  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("输入错误!")

老男孩python学习之作业一购物小程序的更多相关文章

  1. 老男孩python学习之作业二---三级菜单

    因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...

  2. python学习day4--python基础--购物小程序

    '''购物小程序:用户启动时先输入工资用户启动程序后打印商品列表允许用户选择购买商品允许用户不断购买各种商品购买时检测余额是否够,如果够直接扣款,否则打印余额不足允许用户主动退出程序,退出时打印已购商 ...

  3. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

  4. 记录Python学习中的几个小问题

    记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...

  5. Python 练习冊,每天一个小程序

    Python 练习冊,每天一个小程序 说明:     Github 原文地址: 点击打开链接 Python 练习冊.每天一个小程序.注:将 Python 换成其它语言,大多数题目也试用 不会出现诸如「 ...

  6. 20180821 Python学习笔记:如何获取当前程序路径

    20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...

  7. 京东购物小程序 | Taro3 项目分包实践

    背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...

  8. Python编写购物小程序

    购物车要求: 用户名和密码存放于文件中 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够 ...

  9. 用python 实现录入学生作业情况的小程序

    写一个录入学生作业情况的一个程序 1.查看学生作业情况 2.录入学生作业情况 3.可以让输入3次,需要为空的情况 homeworks = { ‘张流量’: {‘2018.3.22’:”未交”,’201 ...

随机推荐

  1. JQ 判断 浏览器打开的设备类型

    <script> $(document).ready(function(){ var ua = navigator.userAgent; var ipad = ua.match(/(iPa ...

  2. CSS(CSS3)选择器(2)

    该部分主要为CSS3新增的选择器 接上一篇 CSS(CSS3)选择器(1) 一.通用兄弟选择器: 24:E ~ F,匹配任何E元素之后的同级F元素. div ~ p{ background-color ...

  3. java 10 中 var关键字用法

    引用:https://mp.weixin.qq.com/s/n1tcJ0CywSi0j-YycGPwxg what java10引入了局部变量折断 var用于声明局部变量. 如var user=new ...

  4. 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略

    1.前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔-- 虽然,Kuberne ...

  5. 一周Maven框架学习随笔

    第一次写博客,可能写得不是很好,但是希望自己持之以恒,以后会更好.也希望通过写博客记录随笔,让自己本身有所收获. 下面是今天的maven总结: maven个人理解中是Maven项目对象模型(POM), ...

  6. WHCTF-babyre

    WHCTF-babyre 首先执行file命令得到如下信息 ELF 64-bit LSB executable, x86-64 尝试用IDA64打开,定位到关键函数main发现无法F5,尝试了修复无果 ...

  7. gem devise配置

    Step1: Gemfile中加入gem 'devise' Step3: rails g devise:install 这一步执行完后命令行会提醒要手动进行如下动作: ================ ...

  8. 2018(上)C高级第0次作业

    一:已关注邹欣老师的博客,以及一些任课老师的博客. 二:新学期新气象,走过基础C语言的学习,转眼间来到了C语言的高级学习... 1.翻阅邹欣老师博客关于师生关系博客,并回答下列问题. (1)最理想的师 ...

  9. C语言第三周作业---单层循环

    一.PTA实验作业 题目1 1.实验代码 int N = 0,i; char sex; float a[9], height; scanf("%d\n", &N); for ...

  10. 20162311张之睿 Linux基础与Java开发环境实验报告

    实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习& ...