1.元组
特点:不能够增删改,只能查,也叫做只读列表
两种用法:count和index
names = ["han","wang","liu","hanjiali","han" ] print(names.index("wang"))
输出结果:
1
什么情况用元组?
信息不想被改,就用元组。
2.购物车程序
需求:1.启动程序后,让用户输入工资,然后打印商品的列表
2.允许用户根据商品编号购买商品
3.用户选择商品后,检测余额是否够,够就直接扣除,不够提醒
4.可随时退出,退出时,打印已购商品和余额
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()
运行结果:
C:Users韩佳丽Desktop老男孩python2019.8 01venvScriptspython.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元 对不起,您的余额不足。 请输入您的工资:
请输入您的工资: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元 对不起,您的余额不足。 请输入您的工资:
优化版本
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