Python课程第二天作业
一、统计字符串格式
要求:
1 2 3 | # 1.统计元组中所有数据属于字符串的个数,提示: isinstance() # 数据: t1 = (1, 2, '3', '4', 5, '6') # 结果: 3 |
代码
1 2 3 4 5 6 7 8 | #统计元组中所有数据属于字符串的个数 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)) |
二、数据存储为字典类型
要求:
1 2 3 4 | # 2.将以下数据存储为字典类型 # 数据: info = "name:Owen|age:18|gender:男" # 结果: {'name': 'Owen', 'age': 18, 'gender': '男'} # 注:年龄存储为数字类型 |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #将字符串存储为字典类型,其中类型为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) |
三、数据去重
要求:
1 2 3 4 | # 3.完成数据的去重 # 数据: t3 = (1, 2, 1, 2, 3, 5, 9) # 结果: t3 = (1, 2, 3, 5, 9) # 注:从不考虑顺序、考虑顺序两个方面完成 |
代码:
1 2 3 4 5 6 7 8 9 10 | #数据的去重 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) #排序 |
四、计算元组中所有可以转换为数字的数据的总和
要求:
1 2 3 | # 4.计算元组中所有可以转换为数字的数据的总和 # 数据: t4 = (10, 'abc', '100', '3') # 运算结果: 113 |
代码:
1 2 3 4 5 6 7 8 9 10 | #计算元组中所有可以转换为数字的数据的总和 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)) |
五、将数据转换类型存储
要求:
1 2 3 | # 5.将数据转换类型存储 # 原数据: dic = {'name': 'Owen', 'age': 18, 'gender': '男'} # 处理后: info = [('name', 'Owen'), ('age', 18), ('gender', '男')] |
代码:
1 2 3 4 5 | #数据转换类型存储 def Type_Conversion(): dic = { 'name' : 'Owen' , 'age' : 18, 'gender' : '男' } info=list(dic.items()) print(info) |
六、计算元组中所有可以转换为数字的数据的总和
要求:
1 2 3 4 5 6 7 8 9 | # 拓展:选做 # 1.计算元组中所有可以转换为数字的数据的总和 # 数据: t4 = (10, 'abc', '100', '3', '壹', '肆', [1000], (10000,)) # 运算结果: 11118 # 提示: # -- 利⽤字符串isnumeric()判断汉字 # -- 利⽤字典{'壹': 1 ...}将汉字转换为数字 # -- 利⽤isinstance()将list和tuple中数据取出来 # -- 先将所有转化为数字的数据存放在⼀个单列集合中,在做运算 |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #数据转换类型存储(扩展) 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)) |
七、录⼊电话本
要求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # 2.完成录⼊电话本 # 需求: '' ' -- 从键盘中录⼊姓名(不区分⼤⼩写): -- 姓名必须是全英⽂组成,不是则重新录⼊姓名,如果是q,代表退出 -- 从键盘中再录⼊电话: -- 电话必须为数字且⻓度必须是11位(不能转换为数字) -- 如果出现姓名相同,则保留最后⼀次电话号码 -- 形成的数据是有电话分组的,如:第⼀次录⼊Owen, 13355667788,则会形成 -- { 'O' : { 'Owen' : '13355667788' } }最终数据,分组名⼀定⼤写: { 'E' : { 'egon' : '17788990000' , 'engo' : '16633445566' }, 'O' : { 'Owen' : '13355667788' } } '' '<strong> </strong> |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #电话本录入 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' ) |
八、三级菜单打印:
要求
1 2 3 | 打印省、市、县三级菜单 可返回上一级 可随时退出程序 |
流程图:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | <strong>#!/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() </strong> |
九、购物车小程序
要求:
1 2 3 4 5 | 用户名和密码存放于文件中,格式为: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()

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)
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具