zoukankan      html  css  js  c++  java
  • 第二天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("
    ")
    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
  • 相关阅读:
    线程安全(1)--demo1
    java--构造器与static
    I/O---读取txt文件----demo
    阳光餐厅--oracle---建表---danrong
    定位程序问题出现的原因工具-jstack
    守护线程
    线程的交互:互斥与同步
    正确的停止java中的线程
    使用GSON来生成JSON数据
    使用JSONObject类来生成json格式的数据
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/9064315.html
Copyright © 2011-2022 走看看