想想自己混的也是挺糟心的,从一个毫无疑问一定可以毕业的学生到了一个也许只能我一个不能毕业的学生;从一个不需要谁太担心的人,变成一个老头或者小孩?总而言之,如人生如浮萍,聚散两茫茫所说,一切都存在着未知,一件事没确定之前都是很难判断的。风无定,人无常,人生如浮萍,聚散两茫茫。加油吧!希望借此机会能够跳出chong围攀上龙凤枝,真正拼一把,希望吧!
goods=[ {'商品编号':'1','商品名称':'苹果顶配电脑','商品价格':100001,}, {'商品编号':'2','商品名称':'联想低配电脑','商品价格':10000}, {'商品编号':'3','商品名称':'苹果手机','商品价格':10}, {'商品编号':'4','商品名称':'迈凯伦 720s','商品价格':10000000}, ] name = 'cyd' psd = '123' salary = 0 count1 = 0 count2 = 0 count3 = 0 count4 = 0 shopping_lists = [] shopping_dicts = {} print("您随时可以按’q'退出该程序。") while count1 < 3: count1 += 1 inp_name = input('请输入您的名字: ').strip() if inp_name == 'q': count1 = 3 break inp_psd = input('请输入您的密码: ').strip() if inp_psd == 'q': count1 = 3 break if name == inp_name and psd == inp_psd: print('欢迎VIP %s!!!\n' %inp_name) while count2 < 3: salary = input('请输入您想要贷款的金额(金额 < 100000): ').strip() if str(salary) == 'q': count1 = 3 count2 = 3 break if salary.isdigit(): pass else: print("贷款金额输入请使用数字输入: ") continue if int(salary) < 100000: pass else: print("抱歉!你没有这么高的额度。") continue while count3 < 3: salary = int(salary) print('\n' + ' '*25 + '商品清单' + '\n') for good in goods: print('-'*10 + str(good) + '-'*10) print("您目前剩余金额: " + str(salary)) label = input("请输入您想购买的商品编号: ").strip() if label == 'q': count1 = 3 count2 = 3 count3 = 3 count4 = 3 break if label.isdigit(): pass if int(label) < len(goods) + 1 and int(label) > 0: pass else: print("您输入的商品不存在,商品编号请使用现有商品编号数字输入,请重新输入你想要购买的商品: ") count3 = 0 continue good_count = input("请输入您想购买的商品数量: ").strip() if good_count == 'q': count1 = 3 count2 = 3 count3 = 3 count4 = 3 break if good_count.isdigit(): pass else: print("商品数量请使用整数,请重新输入您想购买的商品数量: ") count2 = 0 continue print("您购买的是: %s * %s" %(goods[int(label) - 1]['商品名称'], good_count)) for good in goods: if label in good['商品编号']: if salary - good['商品价格']*int(good_count) < 0: print("您的余额不足:") recharge = input(''' 1.输入'有德无敌帅'进行充值,充值金额为:10000000(一辆迈凯伦)\n 2.输入'我已向支付宝15306815606转账'并向支付宝账户15306815606充值¥10,充值金额:1000000\n 3.输入'3',充值金额:1000000\n 4.输入'q'退出购物车\n 请输入您想要充值的方法: ''').strip() if recharge == 'q': count1 = 3 count2 = 3 count3 = 3 count4 = 3 break if recharge == '有德无敌帅': print("大佬我向你致敬!!!"* 3) salary = 10000000 + salary continue if recharge == '我已向15306815606支付宝转账': print("谢谢您的支持!!!"* 2) salary = 1000000 + salary continue if recharge == '3': print('''\t\t\t\t\t小气鬼喝凉水,老师打你你歪嘴,\n 小气鬼喝凉水,喝了凉水变魔鬼,\n 小气鬼喝凉水,娶个老婆四条腿,\n 小气鬼喝凉水,生个儿子没大腿,\n 小气鬼喝凉水,砸破罐子,割破嘴,\n 小气鬼,喝凉水,回家抱着老婆亲不了嘴。\n''') salary = 100000 + salary continue else: print("输出有误,请重新输入,需用数字输入序列号!") continue else: salary = salary - good['商品价格']*int(good_count) print("您的余额还有: %s" %salary) for shopping_list in shopping_lists: if goods[int(label) - 1]['商品名称'] == shopping_dicts['商品名称']: shopping_dicts['商品数量'] += int(good_count) break else: shopping_dicts = {'商品名称': good['商品名称'], '商品数量': int(good_count)} shopping_lists.append(shopping_dicts) print("你当前购物车现有物品: %s" %shopping_lists[:]) while count4 < 1: quit2 = input("如果还想购买请按‘c’,否按'q'退出程序").strip() if quit2 == 'c': count3 = 0 count4 = 0 break elif quit2 == 'q': count1 = 3 count2 = 3 count3 = 3 count4 = 3 break else: print("您输入有误,请重新输入。") count4 = 0 else: print("请重新输入您的账号密码。") if count1 == 3: break print("\n您已经成功购买: " + str(shopping_lists[:])) print("您还有余额: %s" % salary)
附代码:终极购物车代码。
第八天
元组类型
元组:元组是不可变的列表,能存入多个值,但多个值只有取的需求,而没有改的需求】
定义方式:在()内用逗号隔开任意类型的值
强调:当元组只有一个值的时候,务必加上一个逗号
x=('egon',) print(type(x))
常用操作和内置方法:
1.按照索引取值(可以正向取,也可以反向取),只能取
2.切片(顾头不顾尾, 步长)
names=('alex','egon','wxx','lxx','cxxx') print(names[1:3])
3.长度len()
names=('alex','egon','wxx','lxx','cxxx') print(len(names))
4.成员运算in 和 not in
names=('alex','egon','wxx','lxx','cxxx') print('alex' in names)
5.循环
names=('alex','egon','wxx','lxx','cxxx') for item in names: print(item)
元组需要总结的方法:
1,del删除
names=('alex','egon','wxx','lxx','cxxx','lxx') del names[0]
2.数出元组内值的个数
print(names.count('lxx'))
3.检索元组内值的位置
print(names.index('wxx',0,3))
元组总结:
1.存一个值或多个值,存的值可以是任意类型的
2.有序
3.不可变
注意:列表可变的底层原理:
指的是索引所对应的内存地址是可以改变的
元组不可变的底层原理:
指的是索引所对应的值内存地址是不可以改变的,或者反过来说,只要索引对应值的内存地址没有改变,那么元组始终是没有改变的
字典类型:
value通常可以是任意类型,key 通常是不可变类型,但大多数是字符串类型
优先掌握的操作和内置方法:
1.按key取值,可存可取
d={'x':1,'y':2} d['x']=100 print(d) d['z']=3 print(d)
2.长度len,
d={'x':1,'y':2} print(len(d))
3.成员运算in 和 not in
d={'x':1,'y':2} print('x' in d)
4.删除。pop和del类似于列表
d={'x':1,'y':2} del d['x'] print(d) res=d.pop('y') print(d) print(res)
5.popitem()随机删除字典中的一个键值对
res=d.popitem() print(d) print(res)
6.键keys()值values()和键值对items()
msg_dic={ 'apple':10, 'tesla':100000, 'mac':3000, 'lenovo':30000, 'chicken':10, } names=[] for k in msg_dic: names.append(k) print(names) values=[] for k in msg_dic: values.append(msg_dic[k]) print(values) keys=msg_dic.keys() print(keys) for k in keys: print(k)= l=list(keys) print(l) vals=msg_dic.values() print(vals) print(list(vals)) print(msg_dic.items()) print(list(msg_dic.items()))
7.循环
只取key for k in msg_dic: print(k,msg_dic[k]) for k in msg_dic.keys(): #keys可加可不加 print(k,msg_dic[k]) 只取value for v in msg_dic.values(): print(v) 取key和value for k,v in msg_dic.items(): #k,v=('apple', 10) print(k,v)
需要掌握的内置方法:
1.get()获取某个不存在的值的时候返回None,不会报错
d={'x':1,'y':2,'z':3} v=d.get('xxxx') print(v) print(d['xxxxxxx'])
2.update(),把一个字典加入另一个字典中
d={'x':1,'y':2,'z':3} d1={'a':1,'x':1111111} d.update(d1) print(d)
3.fromkeys,可以把一个列表初始化一个初始字典
l=['name','age','sex'] d={} for k in l: d[k]=None d=dict.fromkeys(l,None) print(d)
4.setdefault
info.setdefault info={'name':'egon','age':18,'sex':'male'} 如果字典中有setdefault指定的key,那么不改该key对应的值,返回原的value res=info.setdefault('name','EGON_NB') print(info) print(res) 如果字典中没有setdefault指定的key,那么增加一个key:value,返回新的value info.setdefault('height',1.80) print(info) info={'age':18,'sex':'male'} v=info.setdefault('name','浩哥') print(v)
setdefault控制循环避免循环重复的值
s='hello alex alex say hello sb sb' l=s.split() print(l) d={} for word in l: #word= 'hello' if word not in d: d[word]=1 #{'hello':2, 'alex':2,'say':1} else: d[word]+=1 print(d) s='hello alex alex say hello sb sb' l=s.split() print(l) d={} d={'hello':2,'alex':2} for word in l: #word='alex' d[word]=l.count(word) #d['alex']=2 d.setdefault(word,l.count(word))