1. 第一个程序hello world:
   #!/usr/bin/env python3        #非指定
   #!/usr/bin/python            #指定的方法
   print("hello world!")
2. 变量:
   定义:变量就是用来存储数据,方便程序调用;
   name = 'Brace Li'
   name2 = name
   print("My name is ", name, name2)
   name = "Lucy chen"
   print(name, name2)
   输出:
   My name is  Brace Li Brace Li
   Lucy chen Brace Li
 
   变量的定义规则:
   1. 变量名智能是字母,数字或下划线的任意组合;
   2. 变量的第一个字符不能是数字;
   3. 以下关键字不能声明为变量名;
    ['and','as','break'.......]
 
   变量名要有特别的意义, 尽量为英语单词,可提高读性:
   例如:
     name
     age
     gender
     wife_of_brace
 
   常量:永远不改变的 例如:圆周率
   python 不支持常量。
   在python中要定义常量,用全大写。例如:PIE=3.14
 
3. 字符编码:
   计算机底层就是电路,只认识0和1,表示通电和断电的2种状态;
   早期的字符编码:ASCII,美国标准信息交换代码,是基于拉丁字母的一套电脑编码系统
   一个字符只能用1个字节8位来表示,即最多只能表示2**8-1=256-1个字符
   ASSCII码(只用了127个,0-127),其最多只能表示255个符号。128-255是预留的。
 
   关于中文:
   GB2312 共收录了7445个字符,支持汉字太少;
   GBK1.0收录了21886个汉字
   GB18030取代了GBK1.0, 收录了27000多个汉字
 
   国际ISO,兼容所有国家的语言:Unicode
   统一码,万国码
   缺点占用空间太大。
   一个字符统一占2个字节,16位,对于英文字符存储空间是ASCII的2倍
 
   UTF-8:支持Unicode可变长的
   存一个中文需要3个字节。
   存一个英文需要1个字节。
 
   字节(bytes)=8 位bit
 
   python3 默认是UTF-8字符
   python2 默认是ASCII字符
 
   在python2中显示中文需要指定解释器的编码
   # -*- coding:utf-8 _*_               #告诉解释器使用utf-8编码
 
 
4. 程序的注释:
  单行注释:  #
  多行注释: 三个单引号或三个双引号开始和三个单引号或三个双引号结束;
   """
     hello,brace
   """

  三个单引号或三个双引号开始和结束,也可以表示打印信息;
 help_info = """
   usage:
      1.  xxxx;
      2. xxxx;
   """
 print(help_info)
 
5. 用户输入:
   username = input("user name:")
   password = input("password:")                   #明文输入;
   print(username, password)
  
  函数 input  表示的输入: 
    在python2中raw_input 和python3中的input功能一样。
    python3中已经没有raw_input
 
  密文输入用户密码:
   需要导入一个标准库: getpass
 
   import getpass
   password = getpass.getpass("password:")
   print(password)
   注意:这个库在pycharm中不好使;
 
 
6. 格式化输出
  格式化输出1:
     name = "brace"
     age = 22
     gender = "male"
     job = "IT"
     salary = 10000
     info = """
       ====== info of %s==========
       Name:%s
       Age:%d
       Gender:%s
       Job:%s
       Salary:%d
     """ %(name,name,age,gender,job,salary)
     print(info)
   输出:
     ====== info of brace==========
     Name:brace
     Age:22
     Gender:male
     Job:IT
     Salary:10000
 
 格式化输出2:
   info = """
     ====== info of {_name}==========
     Name:{_name}
     Age:{_age}
     Gender:{_gender}
     Job:{_job}
     Salary:{_salary}
   """ .format(_name=name,_age=age,_gender=gender,_job=job,_salary=salary)
   print(info)
 
   输出:
   ====== info of brace==========
   Name:brace
   Age:22
   Gender:male
   Job:IT
   Salary:10000
 
 
 格式化输出3:
   info = """
     ====== info of {0}==========
     Name:{0}
     Age:{1}
     Gender:{2}
     Job:{3}
     Salary:{4}
   """ .format(name,age,gender,job,salary)
   print(info)
 
   输出:
   ====== info of brace==========
    Name:brace
    Age:22
    Gender:male
    Job:IT
    Salary:10000 
  7. 数据类型:
   %s  :表示字符类型
   %d  :表示整数类型
   %f  : 表示浮点类型
 
   打印数据变量类型:
   print(type(变量))
 
   print(type(name))
   print(type(age))
   print(type(str(age)))
   print(type(int(str(age))))
 
   输出:
   <class 'str'>
   <class 'int'>
   <class 'str'>
   <class 'int'>
 
    str()  :强行转化为字符类型;
    int()  :强行转化为数字类型。

8. 循环判断语句:
   例一 if....else :
   username = input("name:")
   password = input("password:")
   _username = 'brace'
   _password = '123'
   if username == _username and password == _password:
      print("Welcome user {name} login ..." .format(name=username))
   else:
      print("Invalid username and password")
 
   例二 if...elif...else:
   age_of_brace = 30
   guess_age = int(input("guess brace's age:"))
   if guess_age == age_of_brace :
      print("yes, you got it")
   elif guess_age < age_of_brace :
      print("think smaller")
   else:
      print("think bigger!")
  
   例三  while 循环  while...else:
   age_of_brace = 30
   count = 0
   while count < 3:
      print("count:", count)
      guess_age = int(input("guess brace's age:"))
      count += 1
      if guess_age == age_of_brace :
         print("yes, you got it")
         break
      elif guess_age < age_of_brace :
         print("think smaller")
      else:
         print("think bigger!")
   else:
      print("input error more than 3 times,  exiting....")
  
   例四:for 循环 for...else:
   for i in range(10):
     print(i)
 
   for n in range(0,10,2):
      print(n)
  备注:  
   range(0,10,2)
   0     起始
   10   个数
   2    步长
 
   age_of_brace = 30
   count = 0
   for count in range(3):
      print("count:", count+1)
      guess_age = int(input("guess brace's age:"))
      if guess_age == age_of_brace :
         print("yes, you got it")
         break
      elif guess_age < age_of_brace :
         print("think smaller")
      else:
         print("think bigger!")
   else:
      print("input error more than 3 times,  exiting....")
  
  
   break  跳出循序;
   continue 继续执行新的循序
 
 9. 判断变量是否为空的写法:
   第一种:if X is None;
   第二种:if not X;
        当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这些时,
        not X为真,即无法分辨出他们之间的不同。
   第三种:if not X is None;
 
10. 控制台输出带颜色的文字方法
   
  格式:\033[显示方式;前景色;背景色m    
 
   说明:
   前景色        背景色         颜色
   ---------------------------------------
   30                40              黑色
   31                41              红色
   32                42              绿色
   33                43              黃色
   34                44              蓝色
   35                45              紫红色
   36                46              青蓝色
   37                47              白色
   
  显示方式           意义
   -------------------------
   0                终端默认设置
   1                高亮显示
   4                使用下划线
   5                闪烁
   7                反白显示
   8                不可见
 
   例子:
   \033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
   \033[0m          <!--采用终端默认设置,即取消颜色设置-->

   print("\033[1;31;47m Error: Password is Null! \033[0m")
 
 
11.   eval函数就是实现list、dict、tuple与str之间的转化
   str函数把list,dict,tuple转为为字符串
 
   # 字符串转换成列表
   a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
   print(type(a))
   b = eval(a)
   print(b)
 
   # 字符串转换成字典
   a = "{1: 'a', 2: 'b'}"
   print(type(a))
   b = eval(a)
   print(type(b))
   print(b)

作业:
 1. 编写登陆接口;
     输入用户的密码;
     认证成功后显示欢迎信息
     输错三次后锁定(文件存储,锁定用户名)
   
 2. 多级菜单:
     三级菜单(省市县)
     可依次选择进入各子菜单(能返回)
     所需要新知识点,列表,字典
 
 
 
 
 
 


作业:
  编写登陆接口;
   输入用户的密码;
   认证成功后显示欢迎信息
   输错三次后锁定(文件存储,锁定用户名) 
 database.conf 格式:
  {'brace': {'passwd': '12345', 'status': False}, 'lucy': {'passwd': '12345', 'status': 'True'}, 'kitty': {'passwd': '12345', 'status': 'True'}, 'jacky': {'passwd': '12345', 'status': 'True'}}
 
程序:
# Author:Brace Li
import getpass

sys_info = """
============================================================
=                         登录系统                           =
=                          V 1.00                                   =
============================================================
"""
print(sys_info)
count = 1
# read data from database.conf
with open('database.conf', 'r') as fs:
    data = eval(fs.read())
while count < 4:
    # input user name and password and keep them not null
    while True:
        user_name = input("Username:").strip()
        if user_name:
            break
        else:
            print("\033[1;31;47m Error: User Name is Null! \033[0m")
    while True:
        user_pwd = getpass.getpass("Password:").strip()
        if user_pwd:
            break
        else:
            print("\033[1;31;47m Error: Password is Null! \033[0m")
    # check user name and password
    if user_name in data.keys():
        count += 1
        if data[user_name]["passwd"] == user_pwd:
            if not data[user_name]["status"]:
                print("Error: The {_username} locked,pls contact with IT, Bye!!!".format(_username=user_name))
                exit()
            login_info = """
            ============================================================
            欢迎{_username}进入登录系统
            状态:{_status}
            ============================================================
            =                          V 1.00                          =
            ============================================================
            1. 退出, 2. 注销
            ============================================================
            """ .format(_username=user_name, _status=data[user_name]["status"])
            print(login_info)
            while True:
                action_input = input("pls input >>").strip()
                if action_input.isdigit():
                    if int(action_input) in (1, 2):
                        if int(action_input) == 1:
                            exit()
                        if int(action_input) == 2:
                            break
                print("Error: Invalid input !")
        if count > 3:
            print(data[user_name]["status"])
            data[user_name]["status"] = False
            with open('database.conf', 'w') as fs:
                fs.write(str(data))
            print("Error: {_username} had try more than 3 times, {_username} had been locked,system exiting !" .format(_username=user_name))
            exit()
    print("Error: User name or Password not match !")
 
 
 
posted on 2018-05-27 19:32  仙寓游子  阅读(337)  评论(0编辑  收藏  举报