sys模块的问题,深浅COPY的应用场景,元祖与购物车程序练习-打印彩色\033[31;1m--------\033[0m
打印彩色:%s为变量,格式化
print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary) )
想要红色用[31,绿色用[32,背景是红色是[41,背景的绿色是[42
sys模块是C语言写的,所以在模块目录里是找不到sys.py这种模块的。
浅COPY的意思,就是第二个列表的内容只是第一个列表的数值引用。
浅COPY实现的三种方法:

P1,P2为夫妻,他们的存款为子列表,那么如果P1,P2为浅COPY,那么修改任何一个人的存款,另外一个人的存款也同时修改。

元祖tuple:只读列表

语法:它是列表,但是不是中刮号了,而是圆刮号。
names=("1","2","3")
它只有2个方法,一个count,一个index
比如你的程序启动了,你的数据库连接,可以写成元祖。这样数据库连接就不能改,并且更改就会报错!

商品列表

提示余额不足:

退出界面:打印购买清单,以及余额

enumerate函数的应用,自动把你的列表变成(下标,数值)的元祖列表:


打印彩色:%s为变量,格式化
print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary) )
想要红色用[31,绿色用[32,背景是红色是[41,背景的绿色是[42
最终代码以及解析:
#创建商品列表,每个商品都是一个元祖列表
product_list = [
('Iphone',5800),
('Mac Pro',9800),
('Bike',800),
('Watch',10600),
('Coffee',31),
('Alex Python',120),
]
#创建一个列表,购物车,临时变量
shopping_list = []
#让用户输入工资
salary = input("Input your salary:")
#如果输入的是数字,那么才执行下一步
if salary.isdigit():
#将输入的数字的字符串,强制转换成数字整型
salary = int(salary)
#进入死循环
while True:
#将商品列表导出商品的索引数字以及商品元祖
for index,item in enumerate(product_list):
#用这个方法也可以,就是比较low,速度效率低
#print(product_list.index(item),item)
#打印出索引数字以及商品元祖列表
print(index,item)
#让用户选择购买哪个商品
user_choice = input("选择要买嘛?>>>:")
#如果用户输入的是数字类型的字符串
if user_choice.isdigit():
#将用户输入的数字型字符串强制转换成数字整型
user_choice = int(user_choice)
#如果用户的选择小于商品列表的长度,大于等于0,其实这里len(product_list)也可以用index+1来替代
if user_choice < len(product_list) and user_choice >=0:
#将用户选择的商品元祖赋值给p_item
p_item = product_list[user_choice]
#如果商品的价格小于等于工资
if p_item[1] <= salary: #买的起
#商品追加到字符串shopping_list,这个临时变量,购物车
shopping_list.append(p_item)
#工资减去商品的价格
salary -= p_item[1]
#提示用户已经将商品加入购物车,剩余的工资是多少钱
print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m" %(p_item,salary) )
#如果商品的价格大于工资,那么提示购买不成功
else:
print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m" % salary)
#如果用户输入的数字大于商品列表的个数,那么提示购买的商品不存在,在这里就是输入大于等于6的商品标号。
else:
print("product code [%s] is not exist!"% user_choice)
#用户输入q来退出程序,用exit来退出脚本
elif user_choice == 'q':
print("--------shopping list------")
#打印购买的商品清单
for p in shopping_list:
print(p)
#打印剩余的工资
print("Your current balance:",salary)
#退出脚本
exit()
#如果用户商品选择的时候输入的是除数字以外的字符,那么提示输入错误
else:
print("invalid option")
#如果用户在工资那边瞎输入,提示错误
else:
print("invalid option")
sys模块的问题,深浅COPY的应用场景,元祖与购物车程序练习-打印彩色\033[31;1m--------\033[0m的更多相关文章
- 我对js数据类型的理解和深浅(copy)的应用场景
本人毕业一所专科院校,所学专业是计算机应用技术,在大学时对前端有了一定的了解之后,觉得自己对前端的兴趣十分强烈,开始自学前端,一路上也是坎坎坷坷,也有想要放弃的时候,还好坚持了下来,并且从事前端开发已 ...
- Python sys模块 os模块、OS.open() | open() | OS._exit() | sys.exit() | exit()
sys模块:负责程序和Python交互. sys常用方法:=========================== sys.stdout.write('please:')val = sys.stdin ...
- python基础(三)编码,深浅copy
编码,深浅copy encode,decode在python2中使用的一些迷糊,python3中更容易理解 要理解encode和decode,首先我们要明白编码,字符和二进制的相关概念,简单来说,计算 ...
- 总结day6 ---- set集合,基本类型的相互转化,编码,数据类型总结,循环时候不要动列表或者字典,深浅copy
python小数据池,代码块的最详细.深入剖析 一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id ...
- python基础3(元祖、字典、深浅copy、集合、文件处理)
本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...
- Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数
一.collections系列: collections其实是python的标准库,也就是python的一个内置模块,因此使用之前导入一下collections模块即可,collections在py ...
- python之数据类型补充、集合、深浅copy
一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址 ...
- day 14:深浅copy,数据结构 ,函数,set集合,变量作用域、返回值
本节内容: 1,深浅copy 2,数据结构 3,函数 4,变量作用域 5,返回值,return 一.深浅copy 首先理解当给变量赋值的时候,是给变量存在值所在的内存地址 a = 10000 b = ...
- python 的内存回收,及深浅Copy详解
一.python中的变量及引用 1.1 python中的不可变类型: 数字(num).字符串(str).元组(tuple).布尔值(bool<True,False>) 接下来我们讲完后你就 ...
随机推荐
- is7.0中发布mvc网站,一直无法正常执行路由的解决办法
在config中加一句话: <system.webServer> <validation validateIntegratedModeConfiguration="fals ...
- L146 Space Station Hole Cause Will Be Determined
The head of the U.S. space agency said Tuesday he's sure that investigators will determine the cause ...
- ADO Recordset 对象链接
http://baike.baidu.com/link?url=4Xdc46R8M5uj-BbOGaH761N5oDEYlGQJFeR2WbPwx1iQBusAUKU3qbWcHZCMmayatj9n ...
- Android Studio 问题锦集【持续更新】
想必,大家在使用Android Studio(后面简称AS)的过程中会遇到各种各样的问题,现在,我也来谈谈我在使用AS过程中遇到的错误. 1.Plugin with id 'com.android.a ...
- [置顶]
kubernetes1.7新特性:日志审计变化
背景概念 出于安全方面的考虑,Kubernetes提供了日志审计记录,用来记录不同普通用户.管理员和系统中各个组件的日志信息. Kubernetes日志审计是Kube-apiserver组件的一部分功 ...
- 类加载器:ClassLoader与Class的区别
1.类加载器 java字节码(类)的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验.解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类 ...
- OkHttp之ConnectInterceptor简单分析
在< Okhttp之CacheInterceptor简单分析 >这篇博客中简单的分析了下缓存拦截器的工作原理,通过此博客我们知道在执行完CacheInterceptor之后会执行下一个浏览 ...
- [置顶]
Retrofit2 初印象?
鄙人由于工作繁忙很久没写博客了还望大家谅解!之前csdn登不上,算了不说借口了,retrofit2相信已经很火了吧,而且上手也比较容易,之前可能大家都是用Volley,Okhttp.Okhttp3其实 ...
- Anaconda使用、conda的环境管理和包管理
关于Anaconda的安装参考本人之前的博文 http://www.cnblogs.com/bymo/p/8034661.html 关于Anaconda的概述和详细使用参考:https://www.j ...
- Realm的常规使用与线程中的坑
结识 Realm 的催化剂 在我们公司的项目迭代中,由于在之前的聊天这个模块关于用户信息的传值有问题,而之前因为项目经过很多开发者的手,且不提整体的架构有多混乱,就单说缓存这块,就是乱的不行,有的地方 ...