1.元组
特点:不能够增删改,只能查,也叫做只读列表
两种用法:count和index
1 2 | names = [ "han" , "wang" , "liu" , "hanjiali" , "han" ] print (names.index( "wang" )) |
输出结果:
1 | 1 |
什么情况用元组?
信息不想被改,就用元组。
2.购物车程序
需求:1.启动程序后,让用户输入工资,然后打印商品的列表
2.允许用户根据商品编号购买商品
3.用户选择商品后,检测余额是否够,够就直接扣除,不够提醒
4.可随时退出,退出时,打印已购商品和余额
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | class Shopping(): def __init__( self ): self .list1 = [] self .a = input ( "请输入您的工资:" ) self .start() def start( self ): self . list = [ "1.苹果手机:8000元" , "2.华为手机:10900元" , "3.男士T袖:500元" , "4.男士短裤:300元" ] print ( self . list ) self .shop() def shop( self ): self .b = input ( "请输入您想要购买的商品编号(1,2,3,4):" ) self .list2 = [ '1' , '2' , '3' , '4' ] if self .b in self .list2: self .list1.append( self .b) self .c = int ( input ( "是否还要选择商品(1.是 or 2.不用了):" )) if self .c = = 1 : self .shop() else : self .chack() else : print ( "您的输入有误,请重新输入:" ) self .shop() def chack( self ): print ( "您要购买的商品有%s" % self .list1) self .d = int ( input ( "请确定是否正确?(1.正确 or 2.不正确)" )) if self .d = = 2 : self .shop() else : self .money() def money( self ): num = 0 for i in self .list1: if i = = '1' : num + = 8000 print ( "苹果手机" ) if i = = '2' : num + = 10900 print ( "华为手机" ) if i = = '3' : num + = 500 print ( "男士T袖" ) if i = = '4' : num + = 300 print ( "男士短裤" ) print ( "您购买的东西总共有%d元" % num) if int ( self .a) < num: print ( "对不起,您的余额不足。" ) else : self .m = self .a - num print ( "购买成功,您的余额为:%d" % self .m) if __name__ = = '__main__' : shopping = Shopping() |
运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | C:\Users\韩佳丽\Desktop\老男孩\python\ 2019.8 \ 001 \venv\Scripts\python.exe C: / Users / 韩佳丽 / Desktop / 老男孩 / python / 2019.8 / 001 / 01.py 请输入您的工资: 8000 [ '1.苹果手机:8000元' , '2.华为手机:10900元' , '3.男士T袖:500元' , '4.男士短裤:300元' ] 请输入您想要购买的商品编号( 1 , 2 , 3 , 4 ): 1 是否还要选择商品( 1. 是 or 2. 不用了): 1 请输入您想要购买的商品编号( 1 , 2 , 3 , 4 ): 3 是否还要选择商品( 1. 是 or 2. 不用了): 2 您要购买的商品有[ '1' , '3' ] 请确定是否正确?( 1. 正确 or 2. 不正确) 1 苹果手机 男士T袖 您购买的东西总共有 8500 元 对不起,您的余额不足。 请输入您的工资: |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 请输入您的工资: 10000 [ '1.苹果手机:8000元' , '2.华为手机:10900元' , '3.男士T袖:500元' , '4.男士短裤:300元' ] 请输入您想要购买的商品编号( 1 , 2 , 3 , 4 ): 1 是否还要选择商品( 1. 是 or 2. 不用了): 1 请输入您想要购买的商品编号( 1 , 2 , 3 , 4 ): 2 是否还要选择商品( 1. 是 or 2. 不用了): 2 您要购买的商品有[ '1' , '2' ] 请确定是否正确?( 1. 正确 or 2. 不正确) 1 苹果手机 华为手机 您购买的东西总共有 18900 元 对不起,您的余额不足。 请输入您的工资: |
优化版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | product_list = [ ( '苹果手机' , 9000 ), ( '华为手机' , 1000 ), ( 'Bike' , 600 ), ( 'watch' , 3000 ), ( 'python book' , 120 ) ] shopping_list = [] #储存用户购买物品的一个列表 #输入你的工资,input输入的是字符串的形式,看起来输入的是数字,其实是字符串 salary = input ( 'Input your salary:' ) #检测字符串是不是由纯数字构成,如果是,将字符串改为int型 if salary.isdigit(): salary = int (salary) #做循环,但是while true是死循环,需要跳出 while True : for index,item in enumerate (product_list): #for item in product_list: # print(product_list.index(item),item) #enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中 print (index,item) user_choice = input ( "选择您要买的物品序列号:" ) #如果输入的字符串都是数字构成,那么就转化为整数的形式。 if user_choice.isdigit(): user_choice = int (user_choice) if user_choice < len (product_list) and user_choice > = 0 : p_item = product_list[user_choice] if p_item[ 1 ] < = salary: #买得起,将商品添加在列表里 shopping_list.append(p_item) #扣钱的操作 salary - = p_item[ 1 ] print ( "添加%s进入您放入购物车,您的余额为%s:" % (p_item,salary)) else : print ( "你的余额只剩[%s]啦,请充值。" % salary) else : print ( "你选的[%s]不存在" % user_choice) elif user_choice = = 'q' : print ( "-----------------shopping list----------------------" ) for p in shopping_list: print (p) print ( "你花的钱:" ,salary) exit() else : print ( "invalid option" ) break |
分类:
python
, Linux命令详解--陆续添加
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?