radiansdict.clear():删除字典内所有元素
radiansdict.copy():返回一个字典的浅复制
radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值
radiansdict.has_key(key):如果键在字典dict里返回true,否则返回false
radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys():以列表返回一个字典所有的键
radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2):把字典dict2的键/值对更新到dict里
radiansdict.values():以列表返回字典中的所有值
作业:实现购物的小程序,支持多用户登录,可以充值和多次购买
#/usr/bin/env python3
#coding:utf-8
import os,json
import time
def login(): #用户登陆函数
shop = [ #商品店
("bike",1000),
("coffe",30),
("alineware",16000),
("thinkpad",8000),
("iphone",7000),
]
storage_user_file = "./user.py" #存放用户名,密码以及余额的字典,用json格式去存 {"wyx": ["jerry", "100000"]}
user_login_num = 0
exit_flag = True #退出程序标志位
while exit_flag:
existing_users_dict = json.load(open(storage_user_file,‘r‘)) #读取用户资料,以字典形式存储
get_user = input("please your username ")
get_pass = input("please your password ")
if get_user in existing_users_dict and get_pass == existing_users_dict[get_user][0]: #如果用户名密码正确
print ("Welcome to login..")
shop_car = {} #存储购买商品的名称以及商品的价格及和个数 "bike":[100,8]
salary = existing_users_dict[get_user][1] #获取当前用户的工资
salary=int(salary)
while exit_flag:
for item in enumerate(shop): #在shop列表里的每个元组前加上序号,变为 (1,("bike",100))
s_index = item[0] #每个元组的的序号
s_name = item[1][0] #商品
s_price = item[1][1] #商品的价格
print(s_index,s_name,s_price) #输出商店里面 商品的标号,商品的名字以及商品的价格
produc = input("请选择你要购买的商品q=quit,c=check ")
if produc.isdigit(): #如果商品的标号以及购买的个数为整形
producnum = input("请输入购买的个数 ")
producnum = int(producnum)
produc = int(produc)
if produc*producnum < salary: #如果购买的商品个数小于工资
p_product = shop[produc] #商品以及对应的价格,为元组 (‘thinkpad‘, 8000)
p_product_name = p_product[0] #商品的名称
p_product_price = p_product[1] #商品的价格
salary = salary-p_product_price*producnum #工资等于工资减去购买的商品价格乘商品个数
if str(salary).isdigit():
existing_users_dict[get_user][1] = salary #在字典做出相应的更改,写入剩余的工资
shop_car[p_product_name] = [p_product_price,producnum] #把购买的物品和价格以及购买数量放到购物车
buying_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
listnum = len(existing_users_dict[get_user]) #查看这个用户是否第一次购买
if listnum == 2:
existing_users_dict[get_user].append({}) #改变初始字典结构为 {‘wyx‘: [‘jerry‘, 99910, {}]}
existing_users_dict[get_user][2][p_product_name]=[buying_time,producnum] #把购买时间写入到文件为 {‘用户‘: [‘密码‘, 余额, {‘购买的物品‘: [‘购买时间‘,数量]}]}
print(existing_users_dict)
json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
print ("你购买了%s 个数为%s,余额为%s" % (p_product,producnum,salary))
else:
existing_users_dict[get_user][2][p_product_name]=[buying_time,producnum] #把购买时间写入到文件为 {‘用户‘: [‘密码‘, 余额, {‘购买的物品‘: [‘购买时间‘,数量]}]}
json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
print ("你购买了%s 个数为%s,余额为%s" % (p_product,producnum,salary))
else:
recharge = input("余额不足,是否充值 y or n ")
if recharge == ‘y‘ or ‘yes‘:
recharge_num = input("请输入充值数字 ")
recharge_num = int(recharge_num)
salary = salary+recharge_num #最新的余额为之前的余额加上充值的余额
existing_users_dict[get_user][1] = salary #把最新的余额存入字典
print("充值后的余额为%s" % salary)
elif recharge == ‘n‘:
print (‘余额不足‘)
else:
print ("输入有误,请重新输入")
else:
recharge = input("余额不足,是否充值 y or n ")
if recharge == ‘y‘:
recharge_num = input("请输入充值数字 ")
recharge_num = int(recharge_num)
salary = salary+recharge_num #工资等于余额加上充值的钱
existing_users_dict[get_user][1] = salary #改变字典里面的钱
json.dump(existing_users_dict,open(storage_user_file,"w")) #把剩余的钱存入到文件
print ("充值后的余额为%s" % salary)
elif recharge == ‘n‘:
print("余额不足")
else:
print ("输入有误,请重新输入")
elif produc ==‘q‘: #如果用户输入退出键
print ("你购买的物品".center(40,‘-‘))
for i in shop_car:
produc_price = shop_car[i][0] #本次购物车里的商品价格
produc_num = shop_car[i][1] #本次购物车里面的购物次数
print("你本次购买的物品为:%s 价格为:%s 数量为%s " % (i,produc_price,produc_num))
print("END".center(40,"-"))
print("你剩余的工资为%s \n"% salary)
exit_flag = False
elif produc == ‘c‘:
buy_produc_num = len(existing_users_dict[get_user]) #查看是否第一次购物
if buy_produc_num == 2:
print("还没有购买商品,请继续购买")
else:
print ("你购买的物品".center(40,‘*‘))
buy_produc = existing_users_dict[get_user][2] #用户购买的物品包括购买时间和数量
for producname in buy_produc:
buy_produc_name = producname #物品价格
buy_produc_time = buy_produc[producname][0] #购买时间
buy_producnum = buy_produc[producname][1] #购买数量
print("你购买的物品为:%s 时间:%s 数量:%s " % (buy_produc_name,buy_produc_time,buy_producnum))
print("END".center(40,"*"))
print("你剩余的工资为%s \n"% salary)
else:
print("输入有误,请重新输入")
else:
if user_login_num>3:
print ("You are locked")
exit_flag = False
else:
user_login_num+=1
print("请继续尝试")
if __name__ == ‘__main__‘:
login()