第二天Python

这两天的感悟:没有输出和纠正的学习效果确实有差距,这两天主要学了:

  • 各种数据类型(int、str、list、dict、set)及相关操作;
  • 字符编码(主要记住一句话:Unicode作为中转,剩下的就是不断的进行decode和encode);
  • 函数和文件的操作;

下面通过一些例子进行会议总结:

1、作业题目: 编写登陆认证程序:

基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序

升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 # 创建两个空列表,分别用于储存登陆账号和已经锁定账号
 5 user_list = []
 6 lock_user_list = []
 7 
 8 with open("file1","r") as f1:
 9     for line in f1:
10         user_list.append(line.strip())
11 
12 with open("lock_user","r") as f2:
13     for item in f2:
14         lock_user_list.append(item.strip())
15 
16 # 判断用户输入是否为空:
17 def check_input(args):
18     while True:
19         temp_str = input("Please input your %s: "% (args) )
20         if len(temp_str) == 0:
21             print("%s can not be none:"% (args) )
22             continue
23         else:
24             return temp_str
25 
26 # 三次机会
27 for i in range(3):
28     input_name = check_input("username")
29 
30     if input_name in lock_user_list:
31         print("Your accout is locked...")
32         exit()
33 
34     input_pwd = check_input("passwd")
35 
36     str= input_name + ":" + input_pwd
37 
38     if str in user_list:
39         print("Welcome:",input_name)
40         exit()
41     else:
42         print("Your account or passwd is wrong...Try again...")
43 
44 # 超过三次的将被锁定
45 else:
46     with open("lock_user", "a+") as lockuser:
47         lockuser.write(input_name)
48         lockuser.write("\n")
49     print("You have try 3th times,your accout have been locked...")
View Code

 

2、文件查找替换:

1 import os
2 
3 with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:
4     for line in read_f:
5         line=line.replace('alex','SB')
6         write_f.write(line)
7 
8 os.remove('a.txt')
9 os.rename('.a.txt.swap','a.txt') 
View Code

 

3、今天三级菜单:

程序: 三级菜单

要求: 

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序
 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 menu = {
 5     '北京': {
 6         '海淀': {
 7             '五道口': {
 8                 'soho': {},
 9                 '网易': {},
10                 'google': {}
11             },
12             '中关村': {
13                 '爱奇艺': {},
14                 '汽车之家': {},
15                 'youku': {},
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 layers = [menu, ]
50 
51 while True:
52     # 判断当前列表长度,如果等于零,退出;以及下面如果选择q,也是退出程序
53     if len(layers) == 0:
54         break
55 
56     current_layer=layers[-1]
57 
58     for key in current_layer:
59         print(key)
60 
61     choice=input('>>>: ').strip()
62 
63     # 如果选择b,后退一层(其实就是删除最后那层字典)
64     if choice == 'b':
65         layers.pop(-1)
66         continue
67 
68     if choice == 'q':
69         break
70 
71     if choice not in current_layer:
72         continue
73 
74     # 将当前层字典加入列表
75     layers.append(current_layer[choice])
View Code

 

posted @ 2018-05-20 19:47  zheng-weimin  阅读(167)  评论(0编辑  收藏  举报