Python课程第二天作业

 一、统计字符串格式

要求:

# 1.统计元组中所有数据属于字符串的个数,提示: isinstance()
# 数据: t1 = (1, 2, '3', '4', 5, '6')
# 结果: 3 

代码

#统计元组中所有数据属于字符串的个数
def Statistical_String_Number():
    count = 0
    t1 = (1, 2, '3', '4', 5, '6')
    for i in t1:
        if isinstance(i, str):
            count += 1
    print('元组中字符串的个数为:%s'%(count))

二、数据存储为字典类型

要求:

# 2.将以下数据存储为字典类型
# 数据: info = "name:Owen|age:18|gender:男"
# 结果: {'name': 'Owen', 'age': 18, 'gender': '男'}
# 注:年龄存储为数字类型

代码:

#将字符串存储为字典类型,其中类型为str;类型的数字需要转换为int类型
def String_Conversion():
    info = "name:Owen|age:18|gender:男"
    info_list=info.split('|')
    info_dict={}
    for value in info_list:
        k,v=value.split(':')
        if v.isdigit():
          v=int(v)
          info_dict[k] = v
        else:
            info_dict[k] = v
    print(info_dict)

三、数据去重

要求:

# 3.完成数据的去重
# 数据: t3 = (1, 2, 1, 2, 3, 5, 9)
# 结果: t3 = (1, 2, 3, 5, 9)
# 注:从不考虑顺序、考虑顺序两个方面完成

代码:

#数据的去重
def Reduplication_And_Unordering():
    value_tuple = (1, 3, 8, -2, 99, 98, 77, 1, 5, 3, 77, 12)   #老师给的原始数据有问题,在排序和不排序的情况下最后结果都一致
    set_1=set(value_tuple)
    result_nosort=tuple(set_1)
    print(result_nosort)   #不排序
    list_1=list(set_1)
    list_1=sorted(list_1)
    result_sort=tuple(list_1)
    print(result_sort)    #排序 

四、计算元组中所有可以转换为数字的数据的总和

要求:

# 4.计算元组中所有可以转换为数字的数据的总和
# 数据: t4 = (10, 'abc', '100', '3')
# 运算结果: 113

代码:

#计算元组中所有可以转换为数字的数据的总和
def Sum_Of_Numbers():
    number_sum = 0
    t4 = (10, 'abc', '100', '3','fadf','134',18)
    for value in t4:
        value = str(value)
        if value.isdigit():
            value=int(value)
            number_sum  += value
    print('元组内数据总和为:%d' %(number_sum)) 

五、将数据转换类型存储

要求:

# 5.将数据转换类型存储
# 原数据: dic = {'name': 'Owen', 'age': 18, 'gender': '男'}
# 处理后: info = [('name', 'Owen'), ('age', 18), ('gender', '男')]

代码:

#数据转换类型存储
def Type_Conversion():
    dic = {'name': 'Owen', 'age': 18, 'gender': '男'}
    info=list(dic.items())
    print(info)

六、计算元组中所有可以转换为数字的数据的总和

要求:

# 拓展:选做
# 1.计算元组中所有可以转换为数字的数据的总和
# 数据: t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))
# 运算结果: 11118
# 提示:
# -- 利⽤字符串isnumeric()判断汉字
# -- 利⽤字典{'壹': 1 ...}将汉字转换为数字
# -- 利⽤isinstance()将list和tuple中数据取出来
# -- 先将所有转化为数字的数据存放在⼀个单列集合中,在做运算 

代码:

#数据转换类型存储(扩展)
def Sum_Of_Numbers_extend():
    num_sum = 0
    num_list = []
    correspond_dict = {'壹':1, '贰':2, '叁':3, '肆':4, '伍':5, '陆':6, '柒':7, '捌':8, '玖':9, '拾':10}
    t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,))
    for value in t4:
        if isinstance(value, int):     #判断是否是整形,如果是直接添加进数字列表中
            num_list.append(value)
        elif isinstance(value, str):   #判断是否是字符串,
            if value.isdigit():        #判断是否可以别转换为数字,如果可以添加进数字列表中
                value=int(value)
                num_list.append(value)
            elif value.isnumeric():    #判断是否数字,包含中文、罗马类型数字,如果是则从对应的字典中获取数值加入数字列表中
                num_list.append(correspond_dict.get(value))
        elif isinstance(value,list):   #如果是列表则先取出其中的值
            for k1 in value:
                num_list.append(k1)
        elif isinstance(value,tuple):  #如果是元组则先取出其中的值
            for k2 in value:
                num_list.append(k2)
    for i in num_list:                 #计算列表中的数字总和
        num_sum += i
    print('元组内数据总和为:%d' %(num_sum))

七、录⼊电话本

要求:

# 2.完成录⼊电话本
# 需求:
'''
-- 从键盘中录⼊姓名(不区分⼤⼩写):
-- 姓名必须是全英⽂组成,不是则重新录⼊姓名,如果是q,代表退出
-- 从键盘中再录⼊电话:
-- 电话必须为数字且⻓度必须是11位(不能转换为数字)
-- 如果出现姓名相同,则保留最后⼀次电话号码
-- 形成的数据是有电话分组的,如:第⼀次录⼊Owen, 13355667788,则会形成
-- {
'O': {
'Owen': '13355667788'
}
}最终数据,分组名⼀定⼤写:
{
'E': {
'egon': '17788990000',
'engo': '16633445566'
},
'O': {
'Owen': '13355667788'
}
}
''' 

代码:

#电话本录入
def Telephone_Book():
    def Failure_Statistics(count):   #错误退出提示函数
        if count >= 3:
            print()
            print('\033[1;30;41m 失败错误次数过多,程序退出\033[0m')
            exit(2)

    user_dict = {}
    count = 0
    while True:
        name = input('\033[1;30;46m请输入您的姓名:\033[0m ')
        if name.isalpha():
            phone_num=input('\033[1;30;47m请输入您的电话号码:\033[0m ')
            if (phone_num.isdecimal()) and (len(phone_num) == 11):   #如果名称为全英文并且手机号码符合11位
                group_name=name[0].upper()
                if user_dict.get(group_name):         #如果该用户的分组存在,则直接写入用户填写的信息
                    user_dict[group_name][name]=phone_num
                else:                                 #如果该用户分组不存在,则创建该分组并且写用户填写的信息
                    user_dict[group_name]={name:phone_num}
                print()
                print("\033[1;35m*\033[0m"*60)
                print('你的用户名为:\033[1;31m%s\033[0m  您的手机号码为:\033[1;31m%s\033[0m     数据录入成功!' % (name, phone_num))
                print('当前电话本已有数据为:%s' %user_dict)
                print("\033[1;35m*\033[0m" * 60)
                print()
            elif (phone_num.isdecimal()) and  (len(phone_num) != 11):   #当用户名称输入正确,手机格式不符合11位时,提示用户
                count += 1
                Failure_Statistics(count)
                print('\033[1;31m您输入的手机号码不是有效的手机号码,请重新输入!\033[0m')
            else:
                count += 1
                Failure_Statistics(count)
                print('\033[1;31m您输入的手机号码格式不合法,请重新输入!\033[0m')
        else:
            count += 1
            Failure_Statistics(count)
            print('\033[1;31m姓名必须是全英⽂组成,请重新输入\033[0m')

八、三级菜单打印:

要求

打印省、市、县三级菜单
可返回上一级
可随时退出程序  
流程图:

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
menu = {
    '北京': ['朝阳区', '海淀区', '西城区', '东城区', '崇文区', '宣武区', '丰台区', '石景山区', '门头沟', '房山区'],
    '上海': ['黄埔区', '卢湾区', '徐汇区', '长宁区', '静安区', '闸北区', '虹口区', '杨浦区', '宝山区',' 闽行区'],
    '安徽省': {
        '合肥市': ['瑶海区', '庐阳区', '蜀山区', '包河区'],
        '芜湖市': ['镜湖区', '新芜区', '马塘区', '鸠江区'],
        '淮南市': ['田家庵区', '大通区', '谢家集区', ' 潘集区'],
        '蚌埠市': ['中市区', '东市区', '西市区', '郊区'],
        '安庆市': ['迎江区', '大观区', '宜秀区', '宿松县'],
        '铜陵市': ['铜官山区', '狮子山区', '郊区', '铜陵县'],
        '黄山市': ['屯溪区', '黄山区', '徽州区', '休宁县'],
        '宣城市': ['宣州区', '宁国市', '广德县', '郎溪县']
    },
    '江苏省': {
        '南京市': ['玄武区', '白下区', '秦淮区', '鼓楼区'],
        '无锡市': ['崇安区', '南长区', '滨湖区', '北塘区'],
        '苏州市': ['沧浪区', '平江区', '相城区', '吴中区'],
        '徐州市': ['鼓楼区', '云龙区', '贾汪区', '泉山区'],
        '南通市': ['崇川区', '港闸区', '海安县', '如东县'],
        '盐城市': ['沧城区', '响水县', '滨海县', '阜宁县'],
        '泰州市': ['海陵区', '高港区', '兴化市', '靖江市'],
        '宿迁市': ['宿城区', '宿豫县', '沭阳县', '泗阳县'],
    },
    '浙江省': {
        '杭州市': ['上城区', '下城区', '江干区', '西湖区'],
        '湖州市': ['市辖区', '德清县', '长兴县', '安吉县'],
        '嘉兴市': ['秀城区', '秀洲区', '海宁市', '平湖市'],
        '绍兴市': ['越城区', '诸暨市', '上虞市', '绍兴县'],
        '衢州市': ['柯城区', '衢江区', '江山市', '龙游县'],
        '宁波市': ['海曙区', '江东区', '江北区', '北仑区'],
        '温州市': ['鹿城区', '龙湾区', '瑞安市', '乐清市'],
        '金华市': ['婺城区', '金东区', '义乌市', '武义县'],
    }
}

number_and_provincial_correspondence = {}  #省字典 {0: '北京', 1: '上海', 2: '安徽省', 3: '江苏省', 4: '浙江省'}
province_list=list(menu.keys())   #将所有省/直辖市写入列表中
for k, v in enumerate(menu):
    number_and_provincial_correspondence[k] = v    #获取省/直辖市列表
province_length=len(number_and_provincial_correspondence)  #获取省/直辖市的个数,用于后续打印


def main():
    count = 0
    print('''\033[1;31;40m欢迎进入全国城市查询系统,目前仅支持以下省/直辖市查询:\033[0m''')
    while True:
        for province in range(province_length):    #循环  省/直辖市 列表
            print(province,number_and_provincial_correspondence[province])   #打印所有省份信息供用户选择
        province_choose = input('\033[1;30;42m根据数字提示,请选择您要查询的省/直辖市,选择"q/Q"退出:\033[0m')   #根据用户的选择,执行相应的操作
        if province_choose == 'q' or province_choose == 'Q':  #退出
            exit(2)
        elif province_choose.isdigit() == False or (int(province_choose) > province_length or int(province_choose) < 0) :  #判断选择的数字是否在合法范围
            count += 1
            if count > 2:
                print('\033[1;31;40m错误次数过多,程序退出!\033[0m')
                exit(2)
            print('\033[1;30;41m无效的选项,请重新输入\033[0m')
        else:
            province_choose = int(province_choose)
            city_list=menu.get(province_list[province_choose])    #获取所在省/直辖市市级列表
            city_length = len(city_list)
            if type(city_list) == list:            # 获取所在省份城市个数
                print('\033[1;31m%s辖区列表:\033[0m'%(number_and_provincial_correspondence[province_choose]))
                print('\033[1;34;46m=\033[0m'*50)
                for city in range(city_length-1):
                    print(city,city_list[city])
                print()
                other_choose = input('\033[1;30;42m返回上一层请按\'r/R\',退出请按"q/Q":\033[0m')
                if other_choose == 'r' or other_choose == 'R':
                    continue
                elif other_choose == 'q' or other_choose == 'Q':
                    exit(2)
                else:
                    count += 1
                    if count > 2:
                        print('\033[1;31;40m错误次数过多,程序退出!\033[0m')
                        exit(2)
                    print('\033[1;31;40m无效的输入,请重新输入\033[0m')
            elif type(city_list) == dict:
                while True:
                    district_and_county_list = []  # 用于存放与省对应的城市名称,每次用户返回后需要情况列表
                    print('\033[1;31m%s 辖区列表:\033[0m' % (number_and_provincial_correspondence[province_choose]))
                    print('\033[1;34;46m=\033[0m' * 50)
                    for city_num,city in enumerate(city_list):
                        print(city_num,city)
                        district_and_county_list.append(city) #将用户所选省份的城市添加入列表中
                    city_choose = input('\033[1;30;42m 根据数字提示,请选择您要查询的城市信息,返回上一层请按\'r/R\',退出请按"q/Q":\033[0m')
                    if city_choose == 'r' or city_choose == 'R':
                        break
                    elif city_choose == 'q' or city_choose == 'Q':
                        exit(2)
                    elif city_choose.isdigit() == False or (int(city_choose) > province_length or int(city_choose) < 0):  # 判断选择的数字是否在合法范围
                        count += 1
                        if count > 2:
                            print('\033[1;31;40m错误次数过多,程序退出!\033[0m')
                            exit(2)
                        print('\033[1;31;40m无效的选项,请重新输入\033[0m!')
                    else:
                        city_choose = int(city_choose)
                        district_and_county_lenght = len(city_list.get(district_and_county_list[city_choose]))   #获取该市区和县的个数
                        district_and_county =city_list.get(district_and_county_list[city_choose]) #获取当前用户选择的城市
                        for district_and_county_num in range(district_and_county_lenght):
                            print(district_and_county_num,district_and_county[district_and_county_num])
                        last_choose = input('\033[1;30;42m 已经到最后啦!返回上一层请按\'r/R\',退出请按"q/Q":\033[0m')
                        if last_choose == 'r' or last_choose == 'R':
                            continue
                        elif last_choose == 'q' or last_choose == 'Q':
                            exit(2)
                        else:  # 判断选择的数字是否在合法范围
                            count += 1
                            if count > 2:
                                print('\033[1;31;40m错误次数过多,程序退出!\033[0m')
                                exit(2)
                            print('\033[1;31;40m无效的选项,请重新输入!\033[0m')


if __name__ == '__main__':
    main()

 九、购物车小程序

要求:

用户名和密码存放于文件中,格式为:egon|egon123
启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
允许用户根据商品编号购买商品
用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
可随时退出,退出时,打印已购买商品和余额  

流程图:

代码如下:

  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 import time
  4 import random
  5 white_user_set=[]
  6 black_user_set=[]
  7 user_list=[]
  8 white_userDB='white_userDB'
  9 black_userDB='black_userDB'
 10 
 11 with open(black_userDB, 'r+') as black_f:
 12     for black_user  in black_f.readlines():
 13         black_user = black_user.strip("\n")
 14         black_user_set.append(black_user)
 15 
 16 with open(white_userDB, 'r+') as white_f:
 17     for file in white_f.readlines():
 18         file = file.strip("\n")
 19         user,passwd,balance= file.split(':')
 20         white_user_set.append({'name':user,'passwd':passwd,'balance':balance})
 21         user_list.append(user)
 22 
 23 def user_register():
 24     count=0
 25     init_money=str(random.randrange(10000,99999))
 26     while True:
 27         count+=1
 28         register_name = input('创建用户名:')
 29         register_passwd = input('创建密码:')
 30         register_passwd1 = input('创建密码:')
 31         if register_passwd == register_passwd1:
 32             if register_name in user_list:
 33                 print('\033[1;31;40m用户已存在,请重新创建\033[0m')
 34             else:
 35                 user_information=register_name+':'+register_passwd+':'+init_money
 36                 with open(white_userDB,'a+') as f:
 37                     f.write('\n')
 38                     f.write(user_information)
 39                 print('\033[32m恭喜您,用户创建成功!!!\033[0m')
 40                 return 0
 41         else:
 42             if count == 3:
 43                 print('\033[1;31;40m失败次数超过上限,程序退出\033[0m')
 44                 exit(3)
 45             print('\033[1;31;40m两次密码不一致,请重新创建2\033[0m')
 46 
 47 def user_login():
 48     Flag = True
 49     user_failures = 0
 50     all_failures = 0
 51     while Flag:
 52         login_name = input('请输入用户名:')
 53         login_passwd = input('输入密码:')
 54         if login_name in black_user_set:
 55             print('\033[1;31;40m该用户已被锁定,请联系您的管理员!\033[0m')
 56             exit(3)
 57         if login_name in user_list:
 58             for subscript,line in enumerate(white_user_set):
 59                 if (login_name == line['name']) and (login_passwd == line['passwd']):
 60                     print('\033[31m正在登录。请稍后\033[0m')
 61                     time.sleep(1)
 62                     print('')
 63                     print('\033[36m=\033[0m'*50)
 64                     print('\033[36m          欢迎来到 澳门皇家商城\033[0m')
 65                     print('\033[36m=\033[0m'*50)
 66                     user_balance=line['balance']
 67                     return (login_name,user_balance)
 68             for subscript,line in enumerate(white_user_set):
 69                 if (login_name == line['name']) and (login_passwd != line['passwd']):
 70                     user_failures += 1
 71                     all_failures += 1
 72                     if (user_failures == 3):
 73                         print('\033[1;31;40m验证失败次数过多,用户被锁定\033[0m')
 74                         with open(black_userDB,'a+') as f:
 75                             f.write(login_name+'\n')
 76                             exit(2)
 77                     print('\033[1;31;40m用户名或密码不正确,登录失败,请重新登录 \033[0m')
 78                     break
 79         else:
 80             print('\033[1;31;40m用户名或密码不正确,登录失败,请重新登录 \033[0m')
 81             all_failures += 1
 82             if all_failures == 6:
 83                 print('\033[1;31;40m失败次数过多,请确认后再登录 \033[0m')
 84                 exit(1)
 85 
 86 def login_system():
 87     while True:
 88         count=0
 89         print('\033[32m1  注册用户:\033[0m')
 90         print('\033[32m2  登录系统:\033[0m')
 91         user_operation=input('\033[32m请选择您的操作:\033[0m')
 92         if user_operation == '1':
 93             user_register()
 94             break
 95         elif user_operation == '2':
 96             login_name, user_balance=user_login()
 97             return (login_name,user_balance)
 98         else:
 99             count+=1
100             if count == 3:
101                 print('\033[1;31;40m失败次数过多,请确认后再登录\033[0m')
102                 exit(3)
103             print('\033[1;31;40m非法的输入,请重试\033[0m')
104 #
105 # if __name__ == '__main__':
106 #     main()
user_login.py
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 import time
  4 import user_login
  5 from prettytable import PrettyTable
  6 
  7 sub_list = {}  # 用户存放子类商品的序号及名称
  8 name_and_price={}   #用于存放子商品下每个子类中的商品名称和价格
  9 serial_number={}
 10 shopping_list={}
 11 price_list=[]
 12 commodities_list=[]
 13 costs=0
 14 
 15 list_Of_commodities = {
 16     'phone': {
 17         'Huawei':
 18             {
 19              'HUAWEI P30 Pro':13333,
 20              'HUAWEI Mate X':9999,
 21              'HUAWEI Mate 20':7999,
 22              'HUAWEI Mate 10':5999
 23             },
 24         'Apple': {
 25             'iPhone XS':8699,
 26             'iPhoneXR':6499,
 27             'iPhone8Plus':4699,
 28             'iPhone7 Plus':3299
 29         },
 30         'millet':{
 31            '小米9': 2999,
 32            '小米8':1599,
 33            '小米play':1099,
 34            '红米6A':549
 35         },
 36         'NOKIA': {
 37            'Nokia 9 PureView':9999,
 38            'Nokia 7 Plus':1799,
 39            'Nokia X6':999,
 40            'Nokia 3.1 Plus':769
 41         }
 42     },
 43     'computer':
 44         {
 45         'DELL': {
 46             'DELL Precision 7730':89999,
 47             'DELL Precision 7430':41999,
 48             'DELL XPS15-9560-R184':14999,
 49             'DELL Latitude5491':9899
 50         },
 51         'HUAWEI':{
 52             'MateBook X Pro':8688,
 53             'MateBook E':7388,
 54             'MateBook 13':5699,
 55             '荣耀MagicBook':3699
 56         },
 57         'millet':{
 58             '小米游戏本':6699,
 59             '小米笔记本 Pro':5599,
 60             '小米笔记本 Air':4999,
 61             '小米笔记本':4199
 62         }
 63     },
 64     'Daily supplies': {
 65         'Jacket':{
 66             'Armani':8888,
 67             'Prada':3888,
 68             'Gucci':1888,
 69             'CK':888
 70         },
 71         'Trousers':{
 72             'Louis Vuitton':9998,
 73             'CHANEL':6888,
 74             'GUCCI':3888,
 75             'PRADA':2888
 76         },
 77         'Skirt':{
 78             'Disney':1888,
 79             'Snoopy':1388,
 80             'Balabala':988,
 81             'BOBDOG':388
 82         },
 83         'red wine': {
 84             'Romani': 8998,
 85             'Merlot': 6666,
 86             'Latour': 3666,
 87             'Lafite': 888
 88         }
 89     },
 90 
 91 
 92 }
 93 def Choice_judgment(max_times):
 94     bill_details = PrettyTable()
 95     count=0
 96     while count < 3 :
 97         user_chose = input('\033[1;30;42m请根据相应的序号选择对应的商品,[s/S]查询当前已购买商品信息  [q/Q]退出程序:\033[0m')
 98         if user_chose == 'q' or user_chose == 'Q':  # 退出
 99             print('\033[1;31;40m程序退出\033[0m')
100             exit(2)
101         elif user_chose == 's' or user_chose == 'S':  # 退出
102             if shopping_list:
103                 print('\033[31m您当前已购买商品如下:\033[0m')
104                 for k,v in shopping_list.items():
105                     bill_details.add_row([k,v])
106                 bill_details._set_field_names(['商品名称','价格'])
107                 print('\033[36m%s\033[0m' %bill_details)
108                 print('\033[31m总共花费为:%s   剩余金额为:%s\033[0m'%(costs,user_balance))
109                 print('\033[31m返回主页面,请稍后\033[0m')
110                 time.sleep(2)
111                 print()
112                 print()
113             else:
114                 print('\033[31m您尚未购买任何商品,余额为%s\033[0m'%(user_balance))
115             return False
116         elif user_chose.isdigit() == False or ( int(user_chose) > max_times or int(user_chose) < 0) or user_chose == False:  # 判断选择的数字是否在合法范围
117             count += 1
118             if count >=3:
119                 print('\033[1;31;40m错误次数过多,程序退出\033[0m')
120                 exit(2)
121             print('\033[1;30;41m无效的选项,请重新输入\033[0m')
122         else:
123             user_chose= int(user_chose)
124             return user_chose
125 
126 def get_serial_and_product():
127     master_list={}
128     classification=PrettyTable()
129     for k1,v1 in enumerate(list_Of_commodities,start=1):
130         master_list[k1]=v1                                    #获取商品序号及种类名称
131         classification.add_row([k1,v1])
132     master_len=len(master_list)                              #商品种类的格式
133     classification._set_field_names(['序号','类别(大类)'])
134     print('\033[34m%s\033[0m' %classification) #打印商品列表
135     return (master_len,master_list)
136 
137 def get_subcategory_info():
138     subclass = PrettyTable()
139     for k2,v2 in enumerate(sub_name_list,start=1):
140         sub_list[k2]=v2                                    #子商品序号及名称
141         subclass.add_row([k2,v2])
142     subclass._set_field_names(['序号','类别(子类)'])
143     print('\033[35m%s\033[0m' %subclass)
144 
145 def get_commodity_price():
146     commodity_price = PrettyTable()
147     count=1
148     for k3,v3 in list_Of_commodities[trade_name][sub_name].items():
149         serial_number[count]=k3
150         name_and_price[k3]=v3
151         commodity_price.add_row([count,k3,v3])
152         count += 1
153     commodity_price._set_field_names(['序号','名称','价格'])
154     print('\033[36m%s\033[0m' %commodity_price)
155     return serial_number
156 
157 
158 login_name,user_balance=user_login.login_system()
159 print('\033[47m您的登陆用户名为:\033[31m %s   \033[47m您的当前余额为 \033[31m%s \033[0m' %(login_name,user_balance))
160 while True:
161     serial,master_list = get_serial_and_product()
162     result=Choice_judgment(serial) # 用户选择的数字
163     if result==False:
164         continue
165     else:
166         trade_name = master_list[result]  # 用户选择的商品种类
167 
168     sub_len=len(list_Of_commodities.get(master_list[result]))   #子商品种类个数
169     sub_name_list=list_Of_commodities.get(master_list[result])  #子商品信息
170 
171     get_subcategory_info()
172     sub_result=Choice_judgment(sub_len)   #用户选择的数字
173     sub_name=sub_list[sub_result]          #用户选择的商品子类
174 
175 
176     name_len=len(get_commodity_price())              #子类商品个数
177     name_result=Choice_judgment(name_len)
178     user_balance=int(user_balance)
179     current_price=name_and_price[serial_number[name_result]]
180     if current_price > user_balance:
181         print()
182         print('\033[1;30;41m余额不足,当前的商品价格为%s  当前的余额为:%s ,请重新购买\033[0m'%(current_price,user_balance))
183         print()
184         print()
185         time.sleep(1)
186         continue
187     else:
188         user_balance -= current_price
189         shopping_list[serial_number[name_result]]=current_price
190         for cost in shopping_list.values():
191             costs += cost
192         print()
193         print()
194         time.sleep(1)
195         print('''\033[1;31;40m您当前购买的商品为: %s      价格为:%s \033[0m'''%(serial_number[name_result],current_price))
196         print('\033[1;31;40m=\033[0m'*50)
197         print('\033[1;31;40m '*37+'剩余金额:%s \033[0m'%user_balance)
198         print()
199         print()
200         time.sleep(2)
shop_cat.py

 

posted @ 2019-03-27 17:36  百衲本  阅读(544)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码