zoukankan      html  css  js  c++  java
  • python学习笔记第一周

    目录:

    一、基础概念

      1、变量与常量介绍

      2、引号的使用

      3、条件判断

      4、while与for循环

      5、input输入

      6、getpass模块

      7、python编码

    二、作业

      1、个人登录系统

      2、多级目录

    三、自学部分

      1、异常处理

      2、字典的键值引用

      3、字典写入

      4、列表插入

      5、字符串处理

    内容:

    一、基础概念

    1、关于变量与常量

    在python中,只有变量没有常量,变量名要求数字,字母、下划线组成,但是数字不能作为变量名,例如:

    name = ‘xiaopi’

    name_of_thisnumber = 123

    常量可以通过@方式表示,但是也可以更改

    2、引号的使用

    在python中,可以使用' 或者 “  ,和bash不同,在python中,'和”直接没有任何区别,在引号过程中可以使用‘和“,只是要求成对出现,当内容需要嵌套时,’和”需要注意,‘’‘和“”“表示多行注释,例如

    ’‘’

      name = 'xiaopi'

           age = 18

           job  =IT

    ‘’‘

    此时,也可以将''' 变为”“”,效果一致,也可以将该引号部分赋值,这时可以按照固定格式输出

    msg = 

    ’‘’

      name = 'xiaopi'

           age = 18

           job  =IT

    ‘’‘

    print(msg)

    3、条件判断

    if  condition1:

      xxx

    elif  condition2:

      yyy

    else:

      zzz

    通过if  else条件判断,可以针对不同的条件显示不同结果

    4、while与for循环

    while True  基本用法,其中True可以改为其他条件,当编写while循环时,需要确定条件为有限值,防止该循环变为无限循环状态,同时在while同级的情况下,可以写成:

    while True:

           xxxx

    else:

      yyy

    的形式,当满足某一条件后,可以通过break跳出该级循环也可以通过conitue跳出本次循环

    for 表示有限循环次数,可以跟range来规定循环的次数:

    for i in range(10):

      print(i)

    会打印0-9,十个整数,range默认从0开始n-1次结束,可以通过传入参数的方式来限制循环的次数   range(1,10,2)表示从1-9 同时间隔为2,表示1、3、5、7、9

    5、input表示

    在python3中,可以通过name = input(’pls input your name:‘)的方式直接要求用户输入,默认输入为字符串格式,如果需要数值格式,可以使用  name = int(input(’pls input your name:‘))方式将用户的输入转换成数值格式

    input中输入如果不匹配会直接报错

    6、getpass模块

    在python中有getpass标准模块,在调用时可以在输入时防止其他人通过查看屏幕的方式获取:

    import  getpass 

    password = getpass.getpass(’input your password:‘)

    7、python的编码

    最早的ASII码为255个字符中的128个表示,但是由于除了英文外需要表示其他格式的字符,进行了优化,最终ISO组织规定了Unicode编码,通过2个字节表示所有的字符,但是由于这种方式会产生多余的内存空间占用,所以现在的方式采用utf-8模式表示,对应英文占用1个字节,对中文这种占用3个字节,utf-8的压缩方式保存编码,既节约资源,又能保存多种格式,是目前采用的最有效的编码方式

    二、作业

    个人登录系统:

    如果三次登录失败就锁定,如果登录成功就打印欢迎信息

    count = 0
    list_black = [] 
    dict_user = {}
    
    
    try:
        #通过try方式,当首次登录没有形成黑名单时不会报错继续执行
        with open('black-list.txt') as black_file:
            for item in black_file.readlines(): #从文件中全部读入黑名单信息
                b_name = item.split(' ')[0].strip() #将黑名单信息依次取出放入下面列表中
                list_black.append(b_name)
    
    except IOError:
        print('Error: the file is empty!')
    
    
    with open('user.txt') as user_login:   #打开用户记录文件
        for u_item in user_login.readlines():
            u_name = u_item.split(' ')[0].strip()
            u_pass = u_item.split(' ')[1].strip()
            dict_user[u_name] = u_pass  #将用户名与密码以字典方式存入
    while count < 3:
        name = input('input your name: ') 
        #password = getpass.getpass('input your password: ')
    
    
        if name not in list_black:
            password = input('input your password: ')  #保证在用户已在黑名单前就跳出,无需输入密码
            if name in dict_user.keys():   #查看name是否在用户字典的键值中
    
                if password in dict_user.values():  #确保用户字典的值正确
                    print('welcome to login....')
                    id_login = 1    #当成功登录后填写该标志,避免循环退出后该用户名写入黑名单
                    break
    
                else:
                     count += 1   #当密码错误时计数器加1
                     continue
            else:
                count += 1
                continue
        else:
            print('hold on...')
            break
    
    
    
    with open('black-list.txt','a') as black_file:
        if name not in list_black and id_login !=1:  #保证错误的用户名以及没有登录成功的用户名写入黑名单
            black_file.write(name)
            black_file.write('
    ')

    作业二

    多级目录,可以自由选择层级同时带有退出按键:

    msg = '''
        初始界面会打开输入界面,要求输入,如果输入为1,选择一级目录
        如果输入为根据出现的结果选择对应的省份,会出现对应的二级目录
        在根据出现的各级市选择会显示各区,如果需要退出请按q
        如果需要回到上级目录请按e
        如果需要回到主目录请按d
    
    '''
    
    print(msg)
    CN = {
            'shandong' : {
                'qingdao' : ['shinan', 'shibei', 'sifang', 'licang'],
                'yantai' : ['zhifu', 'laishan', 'wuping' , 'fushan' , 'kaifaqu'],
                'jinan' : ['shizhong' , 'lixia', 'licheng', 'changqing'],
    
            },
             'hebei' : {
                 'shijiazhuang' : ['qiaodong', 'qiaoxi', 'xinhua'],
                 'baoding': ['yixia', 'nanshi' , 'xinshi', 'xiongxian', 'gaobeidian', 'shunping', 'xushui', 'dingxing'],
    
    
    
             },
            'jiangsu': {
                'nanjing': ['xuanwu', 'baixia', 'qinhuai', 'gulou', 'pukou'],
                'suzhou': ['pingjiang', 'canglang', 'xiangcheng', 'gaoxin', 'wuzhong']
            }
    
    
        }
    
    
    sheng_key = ''
    shi_key = ''
    
    
    while True:
        if shi_key == 'q' or sheng_key == 'q':  #保证shi_key   sheng_key选择q时可以跳出整个循环
            break
        u_key = input('请选择: ')
        if u_key == '1':   #一级循环的入口
            for i in CN.keys():  #打印省级目录
                print(i)
            while True:
                if shi_key == 'q' :
                    break
                elif shi_key == 'd':#保证shi_key选择d时跳出前将shi_key变量值制空,保证从一级目录向下跳转时不会因为携带变量而导致循环错误
                    shi_key = ''
                    break
                elif sheng_key == 'e' or sheng_key == 'd':  #保证sheng_key在选择e 和d时在退出一级目录不会因为携带变量导致循环错误
                    sheng_key = ''
                    break
                sheng_key = input('请选择省: ')
                if sheng_key in CN.keys():  #打印对应的市级目录
                        for j in CN[sheng_key].keys():
                            print(j)
    
                        while True:
                            shi_key = input('请选择市: ')  #市级对应的区
                            if shi_key in CN[sheng_key].keys():
                                for k in CN[sheng_key][shi_key]:
                                    print(k)
                            elif shi_key == 'e' or shi_key == 'd' or shi_key == 'q':#选择该数值跳出该层级循环
    
                                break
                            else:
                                print('wrong input shi!')
                elif sheng_key == 'e' or sheng_key == 'd':#保证sheng_key 退出前脱去变量参数,保证从上级向下时不会因为该变量导致循环错误
                    sheng_key = ''
                    break
                elif sheng_key == 'q':
                    break
                else:
                    print('wrong input sheng!')
        elif u_key == 'q':
            break
        elif u_key == 'e'  or u_key == 'd':
            print('this is the top !')
        else:
            print('wrong input!')

    三、自学部分

    1、异常处理

    try:

    exception:

    通过这种方式将处理出现异常的情况,可以避免发生异常时程序异常退出

    2、字典的键与值的引用

    dict.keys()表示索引键

    dict.values()表示值

    3、字典的写入

    dict1为字典名:

    dict1[key] = value

    这种方式可以对字典插入键值对

    4、列表的插入

    list_black.append(b_name)  其中list_black是事先定义的空列表,b_name为需要插入的值,该方式会将值插入到最后

    5、字符串处理

    string.split()   #按照()里的内容进行分割,可以为string.split(‘:’)   string.split('  ')

    string.strip()  #去掉两边的空格,还有lstrip()与strip()分别表示去掉左右的空格



  • 相关阅读:
    Java线程专题 3:java内存模型
    Java线程专题 2:synchronized理解
    Java线程专题 1:线程创建
    设计模式七大原则
    JVM 运行时数据区
    css_selector定位,比xpath速度快,语法简洁
    xpath绝对定位和相对定位
    selenium多种定位
    操作浏览器基本元素(不定时更新)
    爬取网页图片并且下载(1)
  • 原文地址:https://www.cnblogs.com/xiaopi-python/p/6292275.html
Copyright © 2011-2022 走看看