时隔半年再写购物车程序并改进

时隔了半年时间,重新把购物车程序拿出来再写一遍,感觉对于循环语句比之前熟悉多了,脑子里面开始有程序流程图,之前懵懵懂懂地跟着老师来写,现在基本可以自己写,自己判断问题出在哪里了。

这段程序没用pycharm来写,直接用NOTEPAD++,感觉还很不错,昨天调试了NOTEPAD++运行python的环境,简单轻度的程序都可以试着用这个写了。界面还是很漂亮的。

编程要求和编程日志思考:

1、写一段商城程购物车序的代码
2、用列表把商城的商品清单存储下来
(1)不能用字典,因为字典无法用序列号打印,用列表中存储元祖的方式。
(2)存到列表 shopping_mail,打印购物车的序列号及表单内容,用enumerate()函数,学习一下使用enumerate()函数。
//
enumerate是翻译过来是枚举的意思,看下它的方法原型:
enumerate(sequence, start=0),返回一个枚举对象。sequence必须是序列或迭代器iterator,或者支持迭代的对象。
enumerate()返回对象的每个元素都是一个元组,每个元组包括两个值,一个是计数,一个是sequence的值,计数是从start开始的,start默认为0。
//

3、购物车的列表为shopping_cart

4、用户首先输入工资金额,判断输入为数字
(1)判断输入是否是数字需要使用.isdigit()方法(判断字符串是否只由数字组成)
例如:
//
str = "123456"
print str.isdigit()
结果:TRUE
str = "this is string example....wow!!!"
print str.isdigit()
结果:FALSE
//

//
While Ture:语句的运算速度比While 1:运算速度要慢,所以尽量while true都用 while 1:来写
同时,if x==ture的运算速度比 if x:慢,所以尽量用if x:来替代。
//

5、用户从商城购物清单中选择购买物品,每次购买成功就用工资减去物品单价
6、判断用户金额是否足够,不足够提示用户
//
(1)shopping_mail是一个表格内嵌了元祖,购物车shopping_cart是一个空表格
(2)choice是选择的数值,可以根据购物清单上的序列号来进行选择。这个简化了购物流程。需要判断choice必须是在0和len(shopping_mail)之间,否则就会出错
(3)p_item是choice这个数值所代表的商品,p_item实际上是一个元祖,比如(‘Iphone‘,5800),p_item[0]对应名称,p_item[1]对应数值。
(4)如果直接把元祖p_item与工资进行对比,计算机会报错,因为元祖里面包含2个元素
//
7、如果用户不想再继续购物,则按Q键退出菜单
8、用户退出之后,将用户购买的清单打印出来。
9、尽量学习带颜色输出几个重点信息字符。

//

(1)字符串*数值可以用来控制空格,横杠等。
(2)/n是回车;/t是类似TAB键

//

 1 space="-"*25
 2 shopping_cart=[]
 3 shopping_mail= [
 4     (‘Iphone‘,5800),
 5     (‘Mac Pro‘,9800),
 6     (‘Bike‘,800),
 7     (‘Watch‘,10600),
 8     (‘Coffee‘,31),
 9     (‘Alex Python‘,120),
10 ]
11 salary=input("请输入您的工资金额:")
12 if salary.isdigit()==True:
13     salary=int(salary)
14 while 1:
15     for i in shopping_mail:
16         print(space)
17         print(shopping_mail.index(i),i)
18         print(space)
19     choice=input("请输入您选择的商品序号: ")
20     if choice.isdigit():
21         choice=int(choice)
22         if choice>-1 and choice<len(shopping_mail):
23             p_item=shopping_mail[choice]
24             if p_item[1]<=salary:
25                 shopping_cart.append(p_item)
26                 salary=salary-p_item[1]
27                 print("\n您选购的商品是:{}".format(p_item))
28                 print("\n您的工资余额是:{}\n".format(salary))
29             else:
30                 print ("\n您的余额不足\n")
31     elif choice==‘q‘:
32         print("\n您本次购买的商品是:{}".format(shopping_cart))
33         print("\n您的工资余额为:{}".format(salary))
34         break
35
36     else:
37         print("输入错误,只能输入商品序列号相关数字!")
38
39 else:
40     print("输入错误,只能输入数字!")

原文地址:https://www.cnblogs.com/show530/p/9614091.html

时间: 2024-08-28 10:30:21

时隔半年再写购物车程序并改进的相关文章

写给程序猿的书

学习是一门学问,作为一名计算机专业的学生更是如此. 无论你是学习哪门语言,无论你是研究哪个方向,你总习惯在自己简历上写上两个字,"精通",然而,在你没有一个合理的学习思路,没有一个具体的自我目标时,你很回答,什么是"精通".精通不仅仅包括知识的广博,精通还指代知识的有效性,尤其是计算机行业.学计算机的过程,你可以类比数学的过程,数学学习中,大家会经常陷入一个误区,那就是做了半年的题,确没有丝毫提高,这是什么原因呢,究其原因,多半是由于重复性学习,机械式学习造成的.何

写给程序员的管理入门课程 -《格鲁夫给经理人的第一课》

写给程序员的管理入门课程 -<格鲁夫给经理人的第一课> 序 格鲁夫给经理人的第一课 <格鲁夫给经理人的第一课> 最早出版于 2007 年,书原名为<High Output Management>.本书的作者格鲁夫是 Intel 的前 CEO,领导了 Intel 从一家濒临倒闭的存储器公司,转型为微处理器公司,并且在个人 PC 开始流行时,成功和微软缔结 Wintel 联盟,主宰了整个 PC 电脑时代. 格鲁夫是一个技术出身的管理者,在本书中,我们甚至看到他多次用编译器来

快速掌握用python写并行程序

目录 一.大数据时代的现状 二.面对挑战的方法 2.1 并行计算 2.2 改用GPU处理计算密集型程序 3.3 分布式计算 三.用python写并行程序 3.1 进程与线程 3.2 全局解释器锁GIL: 3.3 multiprocessing 四.multiprocessing实战 总结 小子今天想来谈谈"并行计算",作为一个非科班人员,我为什么去捣鼓这么一个在科班里也比较专业的问题了.这就要说下我前几天做的一个作业了,当时我用python写了个程序,结果运行了一天,这个速度可让我愁了

在require回调函数中执行tooltipvalidator.init不需要另外再写逻辑

尽管每个人学习开发的过程会不一样,然而无论如何,系统的学习方法对每个学习者来说都是至关重要的.对于初学者,应该经常向资深的游戏开发者学习,通过他们的直播和视频,学习游戏开发的技巧.你从这些专家们身上学到的东西越多,你就可以越快成为优秀的开发者. 通过proceed()方法可以调用目标对象的相应方法,从而实现对目标方法的完全控制! angular2 的依赖注入包含了太多的内容,其中的一个重点就是注入器,而注入器又非常难理解,今天我们不深入介绍注入器的内容,可以参考官方文档,我们今天来说注入器的层级

自己写的程序在OS中运行 杂想

搞嵌入式的同学问:怎么把自己的程序放到OS中? 程序放到OS中,回想一下自己学过的操作系统课程.学了一堆的进程调度.文件系统.是的,自己的操作系统学的都是怎么设计操作系统但是貌似没说明怎么将自己写的程序放到OS中. 首先Linux和Mac O都不熟悉,我回想一下Windows过程中程序的运行.安装-运行,就这么简单. 再想一下,在OS运行的过程中是一个死循环.那么在循环中应该有一个操作是专门监听事件的变动的------HOOK?应该就是想HOOK这种. 那么安装的时候也就是说: 1.我把程序的配

Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。

源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Came

【百度地图-安卓SDK】从头开始写android程序

首先确保有这四个文件 安装jdk 先安装android开发SDK(并不只是为eclipse服务的),即运行installer_r15-windows,指定存储目录,然后就安装,安装到后期指定你要安装的android的版本等,例如我选1.6的版本,继续安装,很快就能结束. 解压eclipse到任意地方,运行eclipse.exe,点help点install new software,选择 http://dl-ssl.google.com/android/eclipse/ 注意不能是https 然后

用笔记本写C程序

首先在Visual Studio Tools 文件中打开 Visual Studio 命令提示(2010),输入命令 notepad 打开记事本,写好程序保存,保存类型:所有文档  文件名:1.c . 再在Visual Studio 命令提示(2010)中输入 cl 1.c 命令. 即可生成 1.exe 文件.

linux下安装codeblocks及写完程序之后编译成功但无法运行的原因

一:在软件中心输入codeblocks,然后点击安装,等着装完就行了. 再按ctrl+alt+t 打开终端 输入 sudo apt-get install gcc 而后再输入sudo apt-get install g++ 最后打开codeblocks写个 helloworld 试试吧. 二:helloworld小程序写完后,也编译通过了,但是却无法运行,那么你再看看保存的地方吧,要是不是保存在linux下的文档了,而是保存在磁盘里的话就是造成不能运行的结果了,更改保存位置试试看呗. 以上仅是我