### u->user li->list prd->套餐
prd_l1 = [
('小时包流量/小时',5),
('日包流量/日',10),
('月末嗨翻天10天10G',20),
('闲时流量1G',10),
('30元5个G',30),
('50元50个G',50),
]
while 7:
u_shopping_li,u_mony =[],input('请输入您的余额:') # 用户购买过的套餐列表,用户余额
if u_mony.isdigit(): # 判断用户输入余额是否为整数
u_mony = int(u_mony) # 转换用户余额为整数
[print(index, prd)for index,prd in enumerate(prd_l1)] # 打印套餐列表
while 1:
u_prds = input("请选择您要购买的套餐(输入'e'可退出程序):") # 用户选择的套餐
if u_prds.isdigit(): # 判断输入是否为数字
u_prd = int(u_prds) # 转换用户选择的套餐序号为整数
if u_prd >= 0 and u_prd < len(prd_l1): # 判断用户输入是否为 0~5
prd, prd_mony = prd_l1[u_prd][0], prd_l1[u_prd][1] # 系统套餐,套餐所需金额
if u_mony >= prd_mony: #判断余额是否够开通套餐
u_shopping_li.append(prd) #把购买过的套餐加到用户套餐列表
u_mony -= prd_mony
print('您选择了<%s>套餐,消费:%s元,余额为:%s元.' % (prd, prd_mony, u_mony))
else:print('对不起您的余额不足已开通此套餐,请及时充值!余额:%s元' % u_mony) # 余额不足提示
else:print('NumbersError:您输入的序号超出范围!') # 除0~5以外的数字,提示
elif u_prds == 'e': # 用户输入 'e'
if u_shopping_li != []:
print('您订购了以下套餐:')
[print(index, i) for index, i in enumerate(u_shopping_li)] # 打印已订购套餐
print('余额为:%d元' % u_mony)
else: print('您未购买任何套餐,余额为:%d元' % u_mony)
exit() # 退出
else: print('TypeError:您输入了错误的字符!') # 除'e' 以外的其它字符, 提示
else: print('余额输入错误:请您重新输入一个整数')# 余额输入了其它字符提示