列表和循环 __author__ = ‘Yimtsao‘# coding: UTF-8list = [ (‘iphone‘,8050), (‘mac pro‘,12000), (‘starbuck latte‘,31), (‘alex python‘,82), (‘bike‘,800),] #商品列表gouwuche = [] #空的购物车while True: wage = input("请输入你现有的金额:") if wage.isdigit(): #判断该字符串是否为数字 wage = int(wage) #将由数字组成的字符串定义为整数 while True: for list_tmp in list: print (list.index(list_tmp),list_tmp) #循环打印出商品列表 num = input("选择你要买的商品编号:") if num.isdigit(): num = int(num) if num >= 0 and num < len(list): #判断 输入的编号是否在商品列表编号范围内 Articles = list[num] if wage >= Articles[1]: #判断余额是否够买商品 wage-=Articles[1] #购买商品后的余额 gouwuche.append(Articles) #将购买的商品加入购物车 print("你已经购买了%s,你现在的余额是%s"%(Articles,wage)) else: print("你的余额不足,快去赚钱吧,你还有",wage) else: print("输出错误的商品编号,请重新选择") else : if num == "q" : #输入为Q 打印余额和商品然后退出 print("你的的购物车里有%s,你的余额为%s"%(gouwuche,wage)) exit() else: print("你的输入是无效参数,请重新输入") else: if wage == "q": exit() else: print("你的输入错误,请重试,若需退出请输入q") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------先附上丑陋的代码,这是利用这三天学到知识写的,主要功能实现 输入你的现金,循环打印出商品列表,按商品编号购物。任意环节按输入q可以退出,并打印余额和已经购买的商品。在我编写时遇到的难点分两处: 第一,如果打印出商品列表,一开始我想用list = """ """然后再""" """中间列表写出,但这样打印出的商品列表和我们的创建的列表就没有关联了,想要维护也很麻烦,所以这种愚蠢的想法是不可取的。最后我采用for i in list 的循环打印,打印出列表元素和利用list.index()取小标来打印商品编号。第二的难点是怎么让输入的字符串,如果是数字就取整,如果不是数字就判断是不是q退出。这里我就利用了isdigit() 判断字符串是不是纯数字是的话将该字符串换为整数,如果不是在判断是不是q退出。这二点都做好了,其余的就是简单if判断后进行打印和运算下,缩进很重要,在写的时候因为缩进问题调试了好几次。 列表列表是我们最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。定义列表name=[‘Yimtsao‘,‘cnblogs‘,‘china‘]name[0] Yimtsaoname[1]cnblogsname[2]china切片:取列表中多个元素name[0:1] #列表中下标从0到1的元素,不包括最后一位‘Yimtsao‘ name[0:-1] #-1 表示最后一位name[:2] #放空表示从第一位开始name[0::2] #后面的2是代表,每隔一个元素,就取一个 追加
>>> name [‘Yimtsao‘, ‘cnblogs‘] >>> name.append("new") >>> name [‘Yimtsao‘, ‘cnblogs‘, ‘new‘]
插入
>>> name [‘Yimtsao‘, ‘cnblogs‘] >>> name.insert(1,"new") 在下标为1的前面插入 >>> name [‘Yimtsao‘, ‘new‘, ‘cnblogs‘]
修改
>>> name [‘Yimtsao‘, ‘cnblogs‘] >>> name[1] = "new" 将下标为1的元素赋予新的值 >>> name [‘Yimtsao‘, ‘new‘]
删除
>>> del name[1] 删除下标1的元素 >>> name [‘Yimtsao‘] name.remove("Yimtsao") 指定删除的元素 [‘new‘] name.pop() 删除列表最后一个元素 [‘Yimtsao‘,]
拓展
>>> name [‘Yimtsao‘, ‘new‘] >>>b = [‘a‘,‘b‘] >>>name.extend(b) 将b列表加入name里
拷贝
>>>name [‘Yimtsao‘, ‘new‘,‘a‘,‘b‘] >>>name_cp = name.copy() >>>name_cp [‘Yimtsao‘, ‘new‘,‘a‘,‘b‘]
统计
name.count("")统计列表元素的个数 >>>name [‘Yimtsao‘, ‘new‘,‘a‘,‘b‘,‘a‘] >>>name.count("a") 2
排序&翻转
>>> name [‘YimTsao‘, ‘cnblogs‘, 1, 2, 3] >>> name.sort() #排序 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() #3.0里不同数据类型不能排序 >>> name [‘YimTsao‘, ‘cnblogs‘, ‘1‘,‘2‘,‘3‘] >>> name.sort() [‘1‘, ‘2‘, ‘3‘, ‘YimTsao‘, ‘cnblogs‘] name.reverse() [‘3‘, ‘2‘, ‘1‘, ‘cnblogs‘, ‘YimTsao‘]
获取下标
>>>name [‘YimTsao‘, ‘cnblogs‘,‘1‘,‘1‘,‘3‘] >>>print(name.index(‘1‘)) #只返回找到的第一个小标 2
时间: 2024-07-30 13:44:24