zoukankan      html  css  js  c++  java
  • day4 笔记

    垃圾处理机制
    # 垃圾回收机制
    # 是python自带的一种自动回收无用内存空间的机制
    # 节省内存空间提高运行效率
    # 1 引用计数 当变量值被变量名直接连接或者间接连接时,则变量计数加一,当变量计数为零时,则解释器回收内存
    # 引用计数分为:直接引用和间接引用
    # 直接引用 : x = 10
    # 间接引用 : l = [1 ,2,x]
    '''
    ps: l1 = [1 , 2 , x] 与 l2 = [1,2,10]  一样
    x = 10 x 中存储的是x的10的内存地址
    l1,l2中存取的是列表 [1,2,10]内存地址
    x = 10
    l = [x]
    x = 123
    print(l) == print([10])
    当列表中存取变量时只存取变量相对应的内存地址而跟变量无关,变量变列表中的值不变.
    '''
    # 但是引用计数存在漏洞 为了修补引用计数的漏洞 产生了
    # 2 标记清楚算法
    # 容器数据类型的循环引用造成漏洞   例如 l1 = ['alex','lee',l2} l2 = ['alex','lee',l1}  当解除l1 l2 与其对应变量值的绑定关系后
    # 其变量值相互关联引用计数算法无法不能回收,我们也无法调用,浪费内存空间.所以有了标记清除法
    # 栈区 : 存放变量名称
    # 堆区 : 存放变量值
    #   开始时扫描 从栈区每个变量名出发往后标记.堆区中没有标记的值就是无法被调取的.清除.
    # 分代回收(降低引用计数的扫描频率,提高回收效率)
    # 给变量设置权重值
    # 降低.引用计数扫描中一直存在连接的变量扫描频率.
    
    input('')
    View Code

    用户交互

    # 1、接收用户的输入
    # 在Python3:input会将用户输入的所有内容都存成字符串类型
    # username = input("请输入您的账号:")  # "egon"
    # print(username, type(username))
    
    # age = input("请输入的你的年龄: ")  # age="18"
    # print(age, type(age))
    # age=int(age) # int只能将纯数字的字符串转成整型
    # print(age > 16)
    
    # int("12345")
    # int("1234.5")
    # int("1234abc5")
    
    
    # 在python2中:
    # raw_input():用法与python3的input一模一样
    # input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型
    # >>> age=input(">>>>>>>>>>>>>>>>>>>>>: ")
    # >>>>>>>>>>>>>>>>>>>>>: 18
    # >>> age,type(age)
    # (18, <type 'int'>)
    # >>>
    # >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
    # >>>>>>>>>>>>>>>>>>>>>: 1.3
    # >>> x,type(x)
    # (1.3, <type 'float'>)
    # >>>
    # >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
    # >>>>>>>>>>>>>>>>>>>>>: [1,2,3]
    # >>> x,type(x)
    # ([1, 2, 3], <type 'list'>)
    # >>>
    
    
    # 2。字符串的格式化输出
    # 2.1 %
    # 值按照位置与%s一一对应,少一个不行,多一个也不行
    # res="my name is %s my age is %s" %('egon',"18")
    # res="my name is %s my age is %s" %("18",'egon')
    # res="my name is %s" %"egon"
    # print(res)
    
    # 以字典的形式传值,打破位置的限制
    # res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}
    # print(res)
    
    # %s可以接收任意类型
    # print('my age is %s' %18)
    # print('my age is %s' %[1,23])
    # print('my age is %s' %{'a':333})
    # print('my age is %d' %18) # %d只能接收int
    # print('my age is %d' %"18")
    
    # 2.2 str.format:兼容性好
    # 按照位置传值
    # res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
    # print(res)
    
    # res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)
    # print(res)
    
    # 打破位置的限制,按照key=value传值
    # res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')
    # print(res)
    
    # 了解知识
    """
    2.4 填充与格式化
    # 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
    # *<10:左对齐,总共10个字符,不够的用*号填充
    print('{0:*<10}'.format('开始执行')) # 开始执行******
    
    # *>10:右对齐,总共10个字符,不够的用*号填充
    print('{0:*>10}'.format('开始执行')) # ******开始执行
    
    # *^10:居中显示,总共10个字符,不够的用*号填充
    print('{0:*^10}'.format('开始执行')) # ***开始执行***
    2.5 精度与进制
    
    print('{salary:.3f}'.format(salary=1232132.12351))  #精确到小数点后3位,四舍五入,结果为:1232132.124
    print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
    print('{0:o}'.format(9))  # 转成八进制,结果为:11
    print('{0:x}'.format(15))  # 转成十六进制,结果为:f
    print('{0:,}'.format(99812939393931))  # 千分位格式化,结果为:99,812,939,393,931
    
    """
    
    # 2.3 f:python3.5以后才推出
    x = input('your name: ')
    y = input('your age: ')
    res = f'我的名字是{x} 我的年龄是{y}'
    print(res)
    View Code

    运算符

    # 运算符
    # 算数运算符
    #   +,-,*,/,//,**,%
    # 比较运算符
    # >,>=,<,<=,==,!=
    # 赋值运算符
    #  = 变量的赋值运算
    '''
    增量赋值
    例如
    a += 1
    b -= 1
    c *= c
    d **= 2
    e %= 2
    f //= 2
    g /= 2
    '''
    # 链式赋值
    x = 10
    y = x
    z = y
    '+++++++++++++++++++++++++'
    x = y = z = 10
    print(id(x),id(y),id(z))
    # 交叉赋值
    x = 10
    y = 20
    temp = x
    x = y
    y = temp
    print(x,y)
    '++++++++++++++++++++'
    x = 10
    y = 20
    x,y = y,x
    print(x,y)
    # 解压赋值(*****)
    # 重点
    salaries = [111,222,333,444,555,666,777]
    mon_0 = salaries[0]
    mon_1 = salaries[1]
    mon_2 = salaries[2]
    mon_3 = salaries[3]
    mon_4 = salaries[4]
    mon_5 = salaries[5]
    mon_6 = salaries[6]
    print(mon_0,mon_1,mon_2,mon_3,mon_4,mon_5,mon_6)
    '++++++++++++++++++++++++++++++++++++++++++++++++++++'
    mon_6,mon_5,mon_4,mon_3,mon_2,mon_1,mon_0 = salaries
    print(mon_0,mon_1,mon_2,mon_3,mon_4,mon_5,mon_6)
    '++++++++++++++++++++++++++++++++++++++++++++++++'
    # 只取开头
    mon_0,mon_1,*_= salaries
    print(mon_0,mon_1)
    # 只取结尾
    *_,mon_5,mon_6 =salaries
    print(mon_5,mon_6)
    '''众所周知 *代表所有的意思
    *讲没有对应关系的值存为列表然后赋值给紧跟其后的变量名
    '''
    View Code

    作业

    # 1
    print('{0:-^36}'.format('in to Egon'))
    a = '''Name : {}
    Age : {}
    Sex : {}
    Job : {}
     '''
    print(a.format('Egon',22,'male','teachor'))
    print('{0:-^36}'.format('end'))
    ''''不熟练待会练习'''
    # 2
    users = {'enon':'永远18岁','lee':'睡你妹起床学习'}
    user_name = input('输入用户名>>>')
    if user_name.lower() in users.keys():
        password = input('输入密码')
        if password == users[user_name.lower()]:
            print('登录成功')
        else:
            print('密码错误,请重试')
    else:
        print('用户名不存在')
    # 3
    egon_age = 18
    temp_age = int(input('猜一下egon的年龄'))
    if temp_age > egon_age:
        print('我那么老么,想清楚在说话 啊!')
    elif temp_age < egon_age:
        print('哈哈,我看起来这么年轻啊,小嘴抹了蜜')
    else:
        print('聪明,帅气如我永远18')
    # 4
    print(10000//30)
    print(10000%30)
    # 5
    egon = 18
    egon += 3
    print(egon)
    # 6
    x = y = z = 10
    # 7
    dsb = 'egon'
    superman = 'alex'
    dsb , superman = superman, dsb
    # 8
    name_1 , naem_2,name_3,name_4,name_5,name_6 = ['alex_sb','wusir_sb','oldboy_sb','egon_nb','lxx_nb','tank_nb']
    print(name_1 , naem_2,name_3,name_4,name_5,name_6)
    View Code

     选做题

    import time
    
    user = {'站在远方看童年': '123456',
            '背着小包袱去旅行': '123456',
            '梦醒安好': '123456',
            'LLK': '123456', 'ZHL': '654321',
            'llk':'123456'}
    
    fla_user_name = []
    with open('.输入错误.txt', mode='r+', encoding='utf-8') as f:
        f.truncate()
    while 1:
        user_name = input('请输入用户名')
        user_password = input('请输入密码')
        with open('.锁定时间.txt', mode='r', encoding='utf-8') as f1:
            if f1:
                lock_user = {}
                for i in f1:
                    lis = i.strip().split('_')
                    # print(lis)
                    # print(lis[0])
                    # print(lis[1],type(lis[1]))
                    lock_user[lis[0]] = lis[1]
            else:
                    lock_user = {}
        if user_name in lock_user.keys():
            now_time = int(time.time())
            star_time = int(lock_user[user_name])
            time_long = now_time - star_time
            if time_long >= 300:
                with open('.输入错误.txt', mode='r+', encoding='utf-8') as f:
                    for i in f:
                        fla_user_name.append(i.strip())
                    while user_name in fla_user_name:
                        fla_user_name.remove(user_name)
                    f.seek(0)
                    f.truncate()
                    for i in fla_user_name:
                        f.write(i+'
    ')
                with open('.锁定时间.txt', mode='r+', encoding='utf-8') as f:
                    for i in f:
                        lis = i.strip().split('_')
                        lock_user[lis[0]] = lis[1]
                    if user_name in lock_user.keys():
                        del lock_user[user_name]
                    f.seek(0)
                    f.truncate()
                    for i in lock_user.keys():
                        f.write(i+'_'+lock_user[i]+'
    ')
                if user_name in user.keys() and user_password == user[user_name]:
                    print('登录成功')
                    break
                else:
                    with open('.输入错误.txt', mode='r+', encoding='utf-8') as f:
                        for i in f:
                            fla_user_name.append(i.strip())
                        numb = fla_user_name.count(user_name)
                    print('本用户还有%s次机会' % (2 - numb))
            else:
                print('还有%s秒用户%s解锁' % (300 - time_long, user_name))
    
        elif user_name in user.keys() and user_password == user[user_name]:
            print('登录成功')
            break
        else:
            with open('.输入错误.txt', mode='r+', encoding='utf-8') as f:
                for i in f:
                    fla_user_name.append(i.strip())
                numb = fla_user_name.count(user_name)
            if numb < 3:
                with open('.输入错误.txt', mode='a+', encoding='utf-8') as f:
                    f.write(user_name + '
    ')
                 #   f.seek(0)
                    for i in f:
                        fla_user_name.append(i.strip())
                    numb = fla_user_name.count(user_name)
                print('本用户还有%s次机会' % (2-numb))
                """"这里写3-numb"""
            elif numb == 3:
                with open('.输入错误.txt', mode='a', encoding='utf-8') as f:
                    f.write(user_name + '
    ')
                    print('用户已经锁定')
                    star_time = int(time.time())
                with open('.锁定时间.txt', mode='a+', encoding='utf-8') as f1:
                    f1.write(user_name + '_' + str(star_time) + '
    ')
                print('本用户锁定五分钟后解锁')
    View Code
  • 相关阅读:
    My SqL 常用命令
    RGB颜色查询对照表
    Android 对话框(Dialog)大全
    【转】Android一些知识点汇总
    Google Maps API v2密钥申请
    蓝牙中文API文档
    IOS 电商类app 第一版架构 改进
    ios 开发小记 (四)
    ios 深度复制 copy & mutablecopy
    CCS绘制成的三角形箭头
  • 原文地址:https://www.cnblogs.com/lee1225/p/12422671.html
Copyright © 2011-2022 走看看