python 练习题:流量套餐订购小程序

    1. 运行程序后,提示输入你现有的话费余额。
    1. 输入余额后打印套餐列表,列表使用第二题的prd_l1。
    1. 用户可以根据套餐编号订购套餐,如果余额足够则打印出扣款金额和话费余额,余额不够则提示用户余额不够。
    1. 在选择套餐编号时,用户可以通过输入e退出订购程序,退出时,打印出已订购套餐和余额。
### 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('余额输入错误:请您重新输入一个整数')# 余额输入了其它字符提示

你可能感兴趣的:(python 练习题:流量套餐订购小程序)