Day 15 20190130 老男孩python学习第15天 内容整理

1. 三级菜单优化  3个小时

 

  1 c = {
  2 
  3 }
  4 
  5 exit_flag = False
  6 
  7 while not exit_flag:
  8     choice_level_1 = input('欢迎来到国家省市区查询系统,按任意键开始查询,退出请输q:')
  9     if choice_level_1 == 'q':
 10         print('系统已退出')
 11         exit_flag = True
 12 
 13     else:
 14         while True:
 15             s_p = '省份列表'
 16             print(s_p.center(50, '-'))
 17             if len(c) == 0:
 18                 s_n = ''
 19                 print(s_n.center(50, ' '))
 20             else:
 21                 for index, i in enumerate(c.keys()):
 22                     print('%s. %s' % (index, i))
 23             print(s_p.center(50, '-'))
 24 
 25             choice_level_3 = input('输入a:增加;输入d:删除;输入e:修改;输入n:查看某省城市子列表;返回上级请输q:')
 26             if choice_level_3 == 'a':
 27                 while True:
 28                     province_add = input('请输入新增省份名称(返回上级请输q): ')
 29                     if province_add == 'q':
 30                         break
 31                     elif province_add not in c.keys():
 32                         add_confirm = input('您想要添加的省份名称为:%s,确认请输1,重新输入请输2' % province_add)
 33                         if add_confirm == '1':
 34                             c[province_add] = {}
 35                             print('%s添加成功!' % province_add)
 36                         elif add_confirm == '2':
 37                             pass
 38                         else:
 39                             print('输入有误,请重新输入')
 40                     else:
 41                         print('对不起,您要添加的省份已经在系统数据中,请勿重复添加,谢谢!')
 42             elif choice_level_3 == 'd':
 43                 while True:
 44                     province_del = input('请输入删除省份名称(返回上级请输q): ')
 45                     if province_del == 'q':
 46                         break
 47                     elif province_del in c.keys():
 48                         del_confirm = input('您想要删除的省份名称为:%s,确认请输1,重新输入请输2' % province_del)
 49                         if del_confirm == '1':
 50                             c.pop(province_del)
 51                             print('%s删除成功!' % province_del)
 52                         elif del_confirm == '2':
 53                             pass
 54                         else:
 55                             print('输入有误,请重新输入')
 56                     else:
 57                         print('对不起,您要删除的省份不在系统数据中,请重新输入,谢谢!')
 58             elif choice_level_3 == 'e':
 59                 while True:
 60                     province_edit = input('请输入要修改的省份名称(返回上级请输q): ')
 61                     if province_edit == 'q':
 62                         break
 63                     elif province_edit in c.keys():
 64                         province_new = input('请输入修改后的省份名称为:')
 65                         if province_new == province_edit:
 66                             print('对不起,新名称不能与旧名称相同,请重新输入')
 67                         elif province_new in c.keys():
 68                             print('对不起,您的修改后的新名称在省份数据库中已存在,请重新输入,谢谢')
 69                         else:
 70                             edit_confirm = input('您想要将省份%s的名称变更为%s,确认请输1,重新输入请输2' % (province_edit, province_new))
 71                             if edit_confirm == '1':
 72                                 c[province_new] = c.pop(province_edit)
 73                                 print('修改成功!%s的名字已经变为%s' % (province_edit, province_new))
 74                             elif edit_confirm == '2':
 75                                 pass
 76                             else:
 77                                 print('输入有误,请重新输入')
 78                     else:
 79                         print('对不起,您要修改的省份不在系统数据中,请重新输入谢谢!')
 80             elif choice_level_3 == 'n':
 81                 if len(c) == 0:
 82                     print('当前数据库为空,请先添加后查看,谢谢!')
 83                 else:
 84                     while True:
 85                         choice_province = input('请输入您想要查看的省份名称,输入成功后进入该省份的城市子列表(返回请输q):')
 86                         if choice_province == 'q':
 87                             break
 88                         elif choice_province in c.keys():
 89                             while True:
 90                                 s_c = '%s省城市列表' % choice_province
 91                                 print(s_c.center(50, '-'))
 92                                 if len(c[choice_province]) == 0:
 93                                     s_n = ''
 94                                     print(s_n.center(50, ' '))
 95                                 else:
 96                                     for index, i in enumerate(c[choice_province].keys()):
 97                                         print('%s. %s' % (index, i))
 98                                 print(s_c.center(50, '-'))
 99 
100                                 choice_level_4 = input('输入a:增加;输入d:删除;输入e:修改;输入n:查看某市区级子列表;返回上级请输q:')
101                                 if choice_level_4 == 'a':
102                                     while True:
103                                         city_add = input('请输入新增城市名称(返回上级请输q): ')
104                                         if city_add == 'q':
105                                             break
106                                         elif city_add not in c[choice_province].keys():
107                                             add_confirm = input('您想要添加的城市名称为:%s,确认请输1,重新输入请输2' % city_add)
108                                             if add_confirm == '1':
109                                                 c[choice_province][city_add] = {}
110                                                 print('%s添加成功!' % city_add)
111                                             elif add_confirm == '2':
112                                                 pass
113                                             else:
114                                                 print('输入有误,请重新输入')
115                                         else:
116                                             print('对不起,您要添加的城市已经在系统数据中,请勿重复添加,谢谢!')
117                                 elif choice_level_4 == 'd':
118                                     while True:
119                                         city_del = input('请输入删除城市名称(返回上级请输q): ')
120                                         if city_del == 'q':
121                                             break
122                                         elif city_del in c[choice_province].keys():
123                                             del_confirm = input('您想要删除的城市名称为:%s,确认请输1,重新输入请输2' % city_del)
124                                             if del_confirm == '1':
125                                                 c[choice_province].pop(city_del)
126                                                 print('%s删除成功!' % city_del)
127                                             elif del_confirm == '2':
128                                                 pass
129                                             else:
130                                                 print('输入有误,请重新输入')
131                                         else:
132                                             print('对不起,您要删除的城市不在系统数据中,请重新输入,谢谢!')
133 
134                                 elif choice_level_4 == 'e':
135                                     while True:
136                                         city_edit = input('请输入要修改的城市名称(返回上级请输q): ')
137                                         if city_edit == 'q':
138                                             break
139                                         elif city_edit in c[choice_province].keys():
140                                             city_new = input('请输入修改后的城市名称为:')
141                                             if city_new == city_edit:
142                                                 print('对不起,新名称不能与旧名称相同,请重新输入')
143                                             elif city_new in c[choice_province].keys():
144                                                 print('对不起,新名称在%s省城市数据库中已存在,请重新输入,谢谢' % choice_province)
145                                             else:
146                                                 edit_confirm = input(
147                                                     '您想要将城市%s的名称变更为%s,确认请输1,重新输入请输2' % (city_edit, city_new))
148                                                 if edit_confirm == '1':
149                                                     c[choice_province][city_new] = c[choice_province].pop(city_edit)
150                                                     print('修改成功!%s的名字已经变为%s' % (city_edit, city_new))
151                                                 elif edit_confirm == '2':
152                                                     pass
153                                                 else:
154                                                     print('输入有误,请重新输入')
155                                         else:
156                                             print('对不起,您要修改的城市不在系统数据中,请重新输入谢谢!')
157 
158                                 elif choice_level_4 == 'n':
159                                     if len(c[choice_province]) == 0:
160                                         print('当前数据库为空,请先添加后查看,谢谢!')
161                                     else:
162                                         while True:
163                                             choice_city = input('请您输入城市名称,输入成功后进入该城市区级子列表(返回上级请输q):')
164                                             if choice_city == 'q':
165                                                 break
166                                             elif choice_city in c[choice_province].keys():
167                                                 while True:
168                                                     s_d = '%s省%s市区级列表' % (choice_province, choice_city)
169                                                     print(s_d.center(50, '-'))
170                                                     if len(c[choice_province][choice_city]) == 0:
171                                                         s_n = ''
172                                                         print(s_n.center(50, ' '))
173                                                     else:
174                                                         for index, i in enumerate(c[choice_province][choice_city]):
175                                                             print('%s. %s' % (index, i))
176                                                     print(s_d.center(50, '-'))
177 
178                                                     choice_level_5 = input('输入a:增加;输入d:删除;输入e:修改;返回上级请输q:')
179                                                     if choice_level_5 == 'a':
180                                                         while True:
181                                                             district_add = input('请输入新增区级名称(返回上级请输q): ')
182                                                             if district_add == 'q':
183                                                                 break
184                                                             elif district_add not in c[choice_province][choice_city]:
185                                                                 add_confirm = input(
186                                                                     '您想要添加的区级名称为:%s,确认请输1,重新输入请输2' % district_add)
187                                                                 if add_confirm == '1':
188                                                                     c[choice_province][choice_city][district_add] = {}
189                                                                     print('%s添加成功!' % district_add)
190                                                                 elif add_confirm == '2':
191                                                                     pass
192                                                                 else:
193                                                                     print('输入有误,请重新输入')
194                                                             else:
195                                                                 print('对不起,您要添加的区级名称已经在系统数据中,请勿重复添加,谢谢!')
196 
197                                                     elif choice_level_5 == 'd':
198                                                         while True:
199                                                             district_del = input('请输入删除区级名称(返回上级请输q): ')
200                                                             if district_del == 'q':
201                                                                 break
202                                                             elif district_del in c[choice_province][choice_city]:
203                                                                 del_confirm = input(
204                                                                     '您想要删除的区级名称为:%s,确认请输1,重新输入请输2' % district_del)
205                                                                 if del_confirm == '1':
206                                                                     c[choice_province][choice_city].pop(district_del)
207                                                                     print('%s删除成功!' % district_del)
208                                                                 elif del_confirm == '2':
209                                                                     pass
210                                                                 else:
211                                                                     print('输入有误,请重新输入')
212                                                             else:
213                                                                 print('对不起,您要删除的区级不在系统数据中,请重新输入,谢谢!')
214                                                     elif choice_level_5 == 'e':
215                                                         while True:
216                                                             district_edit = input('请输入要修改的区级名称(返回上级请输q): ')
217                                                             if district_edit == 'q':
218                                                                 break
219                                                             elif district_edit in c[choice_province][choice_city]:
220                                                                 district_new = input('请输入修改后的区级名称为:')
221                                                                 if district_new == district_edit:
222                                                                     print('对不起,新名称不能与旧名称相同,请重新输入')
223                                                                 elif district_new in c[choice_province][choice_city]:
224                                                                     print('对不起,新名称已经存在于%s省%s市的区级列表,请重新输入' % (
225                                                                         choice_province, choice_city))
226                                                                 else:
227                                                                     edit_confirm = input(
228                                                                         '您想要将区级%s的名称变更为%s,确认请输1,重新输入请输2' % (
229                                                                             district_edit, district_new))
230                                                                     if edit_confirm == '1':
231                                                                         c[choice_province][choice_city].pop(
232                                                                             district_edit)
233                                                                         c[choice_province][choice_city][
234                                                                             district_new] = []
235                                                                         print(
236                                                                             '修改成功!%s的名字已经变为%s' % (
237                                                                                 district_edit, district_new))
238                                                                     elif edit_confirm == '2':
239                                                                         pass
240                                                                     else:
241                                                                         print('输入有误,请重新输入')
242                                                             else:
243                                                                 print('对不起,您要修改的区级不在系统数据中,请重新输入谢谢!')
244 
245                                                     elif choice_level_5 == 'q':
246                                                         break
247 
248                                                     else:
249                                                         print('对不起,您所输入的操作不存在,请重新输入,谢谢!')
250                                             else:
251                                                 print('对不起,您输入的城市名称不存在,请重新输入')
252 
253                                 elif choice_level_4 == 'q':
254                                     break
255 
256                                 else:
257                                     print('对不起,您所输入的操作不存在,请重新输入,谢谢!')
258                         else:
259                             print('对不起,您输入的省份名称不存在,请重新输入')
260 
261             elif choice_level_3 == 'q':
262                 break
263 
264             else:
265                 print('对不起,您所输入的操作不存在,请重新输入,谢谢!')
View Code

 

 

2. # 列举布尔值为False的所有值

None
False
所有值为0的数
"" 空字符串
[] 空列表
() 空元组
{} 空字典

3. 练习题

 1 利用For循环和range输出
 2 For循环从大到小输出1-100
 3 
 4 for i in range(1, 101):
 5     print(101-i)
 6 
 7 for i in range(1, 101):
 8     print(i)
 9 
10 a = 100
11 while 0< a <= 100:
12     print(a)
13     a -= 1
14 
15 
16 a = 1
17 while 0 < a <= 100:
18     print(a)
19     a += 1
20 
21 
22 for i in range(1, 10):
23     for j in range(1, 10):
24         print(i * j)
View Code

4. 购物车  

包括程序3小时
包括文档1小时
包括效果图
包括流程图1小时

https://github.com/xwjxwj7430/Luffy_Python_MyProjects/blob/master/Day%2015%2020190130/%E8%B4%AD%E7%89%A9%E8%BD%A6%E4%BD%9C%E4%B8%9A%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md

  1 #  不知道如何读写文件,所以在此仅列举作为功能示例
  2 
  3 #  user_info为储存用户登录名和密码的数据文件,用于后续登录验证
  4 user_info = {'alex': 'password1',
  5              'eric': 'password2',
  6              'nick': 'password3',
  7              'john': 'password4'
  8              }
  9 
 10 #  user_history为储存用户购买商品记录的数据文件,用户在最开始可以选择是否查看以往消费记录;
 11 #  另外程序最后检测:如果用户名存在于user_info中,则为客户记录购买过的商品
 12 user_history = {'alex': [0, 1, 2],
 13                 'eric': [1, 3],
 14                 'nick': [2],
 15                 'john': []
 16                 }
 17 
 18 #  user_info为储存用户上一次购物之后的余额情况的数据文件,用于后续消费金额的扣除等运算
 19 user_balance = {'alex': 5000,
 20                 'eric': 100,
 21                 'nick': 0,
 22                 'john': 90000
 23                 }
 24 
 25 #  good为在售商品列表
 26 goods = [
 27     {"name": "电脑", "price": 1999},
 28     {"name": "鼠标", "price": 10},
 29     {"name": "游艇", "price": 20},
 30     {"name": "美女", "price": 998},
 31 ]
 32 
 33 #  设定初始程序终止标识符exit_flag与用户消费余额为0
 34 exit_flag = False
 35 balance = 0
 36 
 37 while not exit_flag:
 38     print('\033[7m 欢迎来到天上人间网上购物中心!\033[0m')  # 欢迎界面
 39 
 40     while not exit_flag:
 41         username = input('请输入您的用户名(输入q退出):')  # 用户输入用户名,准备进行比对
 42         if username == 'q':
 43             exit_flag = True
 44         else:
 45             password = input('请输入您的密码:')
 46             if username in user_info.keys():  # 如果用户已存在,则验证密码
 47                 if password == user_info[username]:  # 密码验证成功
 48                     print('\033[7m 登陆成功!欢迎%s的归来!\033[0m' % username)  # 打印欢迎消息
 49                     print('\033[7m 您的余额为%s元\033[0m' % user_balance[username])  # 打印余额信息
 50                     balance = user_balance[username]  # 读取余额信息,作为此次消费的承继基数
 51                     check_history = input('请问您是否要查看以往购物记录?(输入y查看,否则继续)')  # 询问是否需要查看以往购物记录
 52                     if check_history == 'y':  # 读取user_history中的数据并打印
 53                         s_shopping_history = '曾经购买的商品清单'
 54                         print(s_shopping_history.center(50, '-'))
 55                         for index, i in enumerate(user_history[username]):
 56                             print('%s. %s %s元' % (index, goods[i]['name'], goods[i]['price']))
 57                         print(s_shopping_history.center(50, '-'))
 58                         break  # 跳出登陆循环
 59                     else:
 60                         break
 61                 else:
 62                     print('\033[7m 用户名或密码错误,请重新输入!\033[0m')  # 密码错误,重新输入
 63             else:
 64                 add_choice = input(
 65                     '系统检测到这是您第一次登陆天上人间,请问要向本系统添加您的信息,以便下次光临吗?(输入y添加,否则不添加)')  # 如果用户不存在,询问是否添加并允许记录余额、消费记录等信息
 66                 if add_choice == 'y':  # 允许添加,则将用户名、密码对添加到user_info,初始化user_history为空和user_balance为0
 67                     print('\033[7m 谢谢您,系统添加成功!快去购物吧!\033[0m')
 68                     user_info[username] = password
 69                     user_history[username] = []
 70                     user_balance[username] = balance
 71                     break  # 跳出登陆循环
 72                 else:
 73                     print('\033[7m 很遗憾,那下次再添加吧,先去购物吧!\033[0m')
 74                     break  # 跳出登陆循环
 75     while not exit_flag:
 76         salary = input('请输入您的工资(单位:元):')  # 用户输入此次工资收入,加上上次余额,总和即为此次可消费最大金额
 77 
 78         if salary.isdigit():
 79             salary = int(salary)
 80             balance += salary  # 计算此次可消费的最大金额
 81             shopping_cart = []  # 初始化购物车
 82             buy_success = []  # 初始化购买成功的商品清单
 83             total_price = 0  # 初始化此次购物车中商品总价
 84             print('\033[7m您当前的可用余额为%s\033[0m' % balance)  # 高亮提醒客户当前总可消费金额
 85 
 86             while not exit_flag:
 87                 s_list = '商品列表'  # 打印在售商品清单
 88                 print(s_list.center(50, '-'))
 89                 for index, i in enumerate(goods):
 90                     print('%s. %s %s元' % (index, i['name'], i['price']))
 91                 print(s_list.center(50, '-'))
 92 
 93                 item_buy = input('请输入您想要购买的商品编号(输入c查看购物车并结账,输入q退出): ')  # 询问客户决定
 94                 if item_buy == 'q':
 95                     exit_flag = True
 96                 elif item_buy.isdigit():  # 如果客户成功输入一个数字
 97                     item_buy = int(item_buy)
 98                     if item_buy < len(goods):  # 并且该商品在在售列表之中
 99                         shopping_cart.append(item_buy)  # 添加至购物车
100                         print('\033[7m 商品 %s 已经添加到购物车啦!\033[0m' % goods[item_buy]['name'])  # 添加购物车成功提示
101                     else:
102                         print('对不起,商品不存在,请重新输入,谢谢!')  # 提示客户重新输入在售范围内的有效商品编号
103                 elif item_buy == 'c':  # 如果客户选择查看购物车清单
104                     if len(shopping_cart) == 0:  # 如果当前购物车无商品,提示用户先添加商品再查看
105                         print('\033[7m 对不起,当前购物车为空,请先添加商品,谢谢! \033[0m')
106                     else:
107                         s_shopping_cart_list = '购物车商品清单'  # 如果当前购物车不为空,打印购物车清单
108                         print(s_shopping_cart_list.center(50, '-'))
109                         for index, i in enumerate(shopping_cart, start=1):
110                             print('%s. %s %s元' % (index, goods[i]['name'], goods[i]['price']))
111                             total_price += goods[i]['price']
112                         print(s_shopping_cart_list.center(50, '-'))
113                         print('\033[7m 共计%s元 \033[0m' % total_price)  # 打印购物车清单总价
114                         print('\033[7m您当前的可用余额为%s\033[0m' % balance)  # 再次提示客户可用余额,方便比对
115 
116                         decision = input('请问您是否现在结账?结账请输y,退出请输q,否则继续购物: ')  # 询问客户是否结账
117                         if decision == 'y':  # 如结账,则计算当前余额是否足够,不够则提示,够则扣款,并提示扣款成功信息
118                             if balance >= total_price:
119                                 balance -= total_price
120                                 buy_success.extend(shopping_cart)
121                                 print('\033[7m 购物车所有商品扣款成功,您的商品即将进入物流,请耐心等待,谢谢您的支持! \033[0m')
122                                 exit_flag = True  # 成功扣款,退出程序,此次购买完毕
123                             else:
124                                 print('\033[7m 对不起,您的余额不足,请充值后再试!(系统即将为您跳回至购物界面) \033[0m')  # 余额不足,提示充值,并返回购物界面
125                         elif decision == 'q':
126                             exit_flag = True
127                         else:
128                             pass
129                 else:
130                     print('对不起,商品编号有误,请重新输入,谢谢!')  # 输入的商品编号为非数字,也不是退出q,提示出错,重新输入
131 
132             s_buy_list = '已购买的商品清单'  # 最后打印已购买商品清单,如空,则打印‘无’,否则正常打印
133             print(s_buy_list.center(50, '-'))
134             if len(buy_success) == 0:
135                 s_n = ''
136                 print(s_n.center(58, ' '))
137             else:
138                 for index, i in enumerate(buy_success, start=1):  # 正常打印
139                     print('%s. %s %s元' % (index, goods[i]['name'], goods[i]['price']))
140                 if username in user_info:  # 如果客户是已存在用户,将购买记录的列表和余额数字存储至相应数据文件
141                     user_history[username].extend(buy_success)
142                     user_balance[username] = balance
143             print(s_buy_list.center(50, '-'))
144             print('\033[7m 您的余额为%s元 \033[0m' % balance)  # 最后打印此次购买结束后的余额情况
145 
146         else:
147             print('对不起,工资输入有误,请重新输入,谢谢!')  # 工资为非数字,提示报错
148 
149 print('系统已退出')
150 print('期待您再度光临!')
View Code

 






转载于:https://www.cnblogs.com/Jack1314/p/10336844.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值