''' 1. user_mes_list = ["名字:","年龄:","性别:","工作:"] userlist = [] for i in user_mes_list: mes = input("请输入你的{}".format(i)) userlist.append(mes) print('-'*12+"info of {}".format(userlist[0])+'-'*12) print("Name :{0} Age :{1} Sex :{2} Job :{3}".format(*userlist)) print('-'*12+"end".format(userlist[0])+'-'*12) ''' #---------------------------------------------------------------- ''' 2. user_data = { "username":['jiang','egon','alex'], "password":['123','456','789'] } username = input("请输入你的用户名:") if username in user_data["username"]: print("True") else: print("Flase") passwor = input("请输入你的密码:") if passwor in user_data["password"]: print("True") else: print("Flase") ''' #---------------------------------------------------------------- ''' 3. age = 180 get_age = input("你猜Egon多大?") switch = ["大","小","对"] get_age = int(get_age) if get_age==age: i = 2 elif get_age>age: i = 0 else: i = 1 print("你猜{}了".format(switch[i])) ''' #---------------------------------------------------------------- ''' 4. p = 10000//30 q = 10000%30 print("一共有{}页,最后一页有{}行".format(p,q)) ''' #---------------------------------------------------------------- ''' 5. age = 18 age+=3 print("Egon今年{}岁".format(age)) 6. x=y=z=10 7. dsb,superman = superman,dsb 8. names=['alex_sb','wusir_sb','oldboy_sb','egon_nb','lxx_nb','tank_nb'] alex,wusir,oldboy,*_ = names ''' #---------------------------------------------------------------- #拓展 '''import time with open('./user.txt')as f: user_list = f.read() user_list = eval(user_list) print(user_list) """ 循环登陆当检测到登陆成功或者检测到该用户已经被锁定时会结束循环 """ while True: user_name = input("请输入你的用户名:") user_password = input("请输入你的密码:") time_now=time.time() if user_name in user_list: if user_list[user_name]["state"] == 0: if int(time_now)-int(user_list[user_name]["block_time"])<300: print("您的用户已经被锁定,请于5分钟后解锁") break else: user_list[user_name]["time"] = 3 user_list[user_name]["state"] =1 elif user_list[user_name]["password"] == int(user_password): print("欢迎登陆!") break else: user_list[user_name]["time"]=user_list[user_name]["time"]-1 print("您输入的用户名错误,您还剩%d次机会"%(user_list[user_name]["time"])) if user_list[user_name]["time"] == 0: user_list[user_name]["state"]=0 block_time = time.time() user_list[user_name].update(block_time=block_time) print("您的用户已经被锁定,请于5分钟后解锁") break with open('./user.txt','w')as f: f.write(str(user_list)) ''' ''' 文本内容 {'jianghaonan': {'password': 123456, 'state': 1, 'time': 3, 'block_time': 1583407000.4218216}, 'alex': {'password': 666666, 'state': 0, 'time': 0, 'block_time': 1583407000.8743272}, 'egon': {'password': 57575, 'state': 1, 'time': 3}} '''
垃圾回收机制详解:专门用来回收不可用变量所占用的空间内存
1.引用计数:
应用分为直接引用和间接引用,直接引用就是直接就可以根据地址找到所需数据
间接引用就是需要在多走一个环节才能找到所需数据
引用计数实质上就是变量值被变量名所关联的次数,当引用计数为0时,变量值无法再被
调用,这时该变量值被视为垃圾需要清除。
该情况存在漏洞,当两个变量值发生相互调用(比如列表的相互追加)时就会存在虽然
两个变量值的变量名都被解除了,但是引用计数不为0的情况,所以就有了下列办法
2.标记清除
在内存即将耗尽的时候,算法会遍历所有在栈区的变量名,并顺着索引关系找到相应的所有
变量值,对其进行标记,遍历结束后所有没有标记的变量值都会被清除
方法是好,但是遍历所有内存内容导致效率大大降低,于是又有了下述办法
3.分代回收:
考虑到效率问题,我们将一些常用的变量值标记为升级代,升级代中内容减少其遍历次数
但是该方法也存在一定漏洞,毕竟没有十全十美的方法
用户交互与运算符:
用户交互就是人往计算机里输入数据,计算机返回给人结果
为了让计算机能够像人一样与用户沟通交流
输入 input:2.x版本与3.x版本有些许不同
2.x版本存在方法raw_input与input一样,input方法是输入什么类型就存为什么类型
3.x版本input统一存为str类型
输出print:end''以其他字符结尾
格式化输出:把一串字符串中部分内容替换成其他值在输出
为什么用?存在某些固定的值而另外一些值是变化的所以需要郑重输出方式
方式:占位符%s %d
str.format方法
f'{}{}'方法(python3.5之后才更新的方法)
运算符:
1.算数运算符:完成简单的数学运算+ - * / //只保留整数部分 %取余
2.赋值运算符:内存地址的右向左绑定 =
3.比较运算符:作比较使用 < > >= <= == !=
4.增量赋值: age = age+1 =====》 age+=1
5.链式赋值: x=y=z=10
6.交叉赋值:不需要调用第三方变量就可以完成值的呼唤 n,m=m,n
7.解压赋值:如果一个个变量对应那么多少是固定的不能多也不能少
与正则含义相同*代表全部 _代表隐性,所以可以用来取头尾固定数量变量个数