day4

一、变量
1.什么是变量
变量是会变化的量。量是指事物的一种状态 比如:年龄,金钱等

2.为什么要有变量
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。

3.如何使用变量(原则:先定义,后使用)

3.1、变量基本使用:
# name = 'egon' # 定义-》存
# print(name) # 引用-》取

3.2、变量的组成部分:
变量名:指向值所在的内存地址,是访问到值的唯一方式
赋值符号:=号是赋值符号,用来将变量值的内存地址赋值给变量名
变量值:储存的数据,反应事物的状态

3.3、变量名的命名的规则
原则:变量名的命名应该见名知意
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
关键字不能声明为变量名,常用关键字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
ps:不要用拼音,不要用中文,在见名知意的前提下尽可能短

正确的变量案例:age_of_jun=17
page='首页'
_name='俊'

3.4、变量名的命名风格
风格一:驼峰体
AgeOfTony = 56
NumberOfStudents = 80
风格二:纯小写下划线(在python中,变量名的命名推荐使用该风格)
age_of_tony = 56
number_of_students = 80

3.5、变量值的三大特性
id:反应的是变量在内存中的唯一编号,内存地址不同id肯定不同
type:变量值的类型
value:变量值
name='jun'
id(name),type(name),name
1566085854016,str,‘jun’

4.is与==
is:比较左右两个值身份id是否相等
==:比较左右两个值他们的值是否相等

案例:
'''
值相等,id可能不同,即两块不同的内存空间里可以存相同的值
>>>
>>> x='info:Egon:18'
>>> y='info:Egon:18'
>>> print(x,y)
info:Egon:18 info:Egon:18
>>> print(id(x),id(y))
4565819264 4566192176
>>>
>>>
>>>
>>> x == y
True
>>> x is y
False
'''

了解:小整数池[-5,256]
从python解释器启动那一刻开始,就会在内存中事先申请
好一系列内存空间存放好常用的整数



二、常量
1.什么是常量
程序运行过程中不会变化的量

2.为什么要有常量
在程序运行过程中有一些值是不需要改变的如圆周率

3.怎么使用常量
注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念
AGE_OF_ALEX=73 # 小写字母全为大写代表常量,这只是一种约定、规范
AGE_OF_ALEX=74
print(AGE_OF_ALEX)


三、内存管理:垃圾回收机制
1.什么是垃圾回收机制
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾
回收机制:是python自带的一种机,专门用来回收不可用的变量值所占的内存空间(垃圾)

2.为什么要有垃圾回收机制
程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃

3.什么是引用计数
引用计数就是:变量值被变量名关联的次数

3.1 引用计数增加
x = 10 # 10的引用计数为1
y = x # 把x的内存地址给了y,此时想,y都关联了10,所以10的引用计数为2

3.2 引用计数减少
del y # 解除变量名y与值10的绑定关系,10的引用计数变为1
x = 12345 #10的引用计数变为0


四、基本数据类型
变量的值是用来存储事物状态的,事物的状态分成不同种类,所以变量值也应该有不同的类型
1.数字类型:
1.1 int 整型:用来记录人的年龄,出生年份,学生人数等整数相关的状态
如:age=18

1.2 float 浮点型:用来记录人的身高,体重,薪资等小数相关的状态
如:height=175.6

ps:数字类型之间是可以进行数学运算的 如:加减乘除和比较大小

2.字符串类型str
用来记录人的名字,家庭住址,性别等描述性质的状态

用单引号、双引号、多引号,都可以定义字符串,本质上是没有区别的,但是需要考虑引号嵌套的配对问题
如:
msg = "My name is Tony , I'm 18 years old!" #内层有单引号,外层就需要用双引号
多引号可以写多行字符串
msg = '''
天下只有两种人。比如一串葡萄到手,一种人挑最好的先吃,另一种人把最好的留到最后吃。
照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的;第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。
不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。
'''

ps:字符串类型只能进行加乘运算,
加:把两个字符串简单的拼接
name = 'tony' age = '18' name + age='tony18'
乘:把字符串相加了几次
name*5='tonytonytonytonytony'


3.列表list:索引对应值,索引从0开始,0代表第一个,索引反映的是顺序、位置,对值没有描述性的功能
作用:按位置记录多个值(同一个人的多个爱好、同一个班级的所有学校姓名、同一个人12个月的薪资),并且可以按照索引取指定位置的值

定义:在[]内用逗号分隔开多个任意类型的值,一个值称之为一个元素 stu_names=['张三','李四','王五']

列表的取值:stu_names[0] stu_names[1] 分别对应'张三','李四'
列表可以嵌套,嵌套取值如下:
students_info=[['tony',18,['jack',]],['jason',18,['play','sleep']]]
students_info[0][2][0] #取出第一个学生的第一个爱好


4.字典类型dict:key对应值,其中key通常为字符串类型,所以key对值可以有描述性的功能
作用:用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能

定义:在{}内用逗号分开各多个key:value d={'a':1,'b':2}

字典的其他用途和取值:
students_info=[
{"name":'egon1','age1':19,'gender':'male'},
{"name":'egon2','age1':19,'gender':'male'},
{"name":'egon3','age1':19,'gender':'male'},
]
print(students_info[1]['gender'])


5. 布尔类型bool
作用:用来记录真假这两种状态

定义
is_ok = True
is_ok = False
print(type(is_ok))

其他使用:通常用来当作判断的条件,我们将在if判断中用到它


总结:如何选择合适的类型来记录状态
1、选取的类型是否可以明确标识事物的状态
2、存不是目的,存的目的是为了日后取出来用,并且方便的用
3、把自己想象成一台计算机,如果我是计算机,
我会如何以何种形式把事物的状态记到脑子里
然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态





作业:
str
list
str
str
str
int

students_info[0][2][0]
info['company_info']['name']
students[1]['hobbies'][1]


import time,os
user_lists = {'name':'aaa','pwd':'123'}
count = 0
tag=True
while tag:
name = input("请输入姓名:")
if name == user_lists['name']:
if os.path.exists("%s.text"%name):
print("该用户已被锁定,5s后解锁")
time.sleep(5)
os.remove("%s.text"%name)
pwd = input("请输入密码:")
if pwd == user_lists['pwd']:
print("登入成功")
tag = False
break
else:
print("密码错误")
count += 1
if count == 3:
with open("%s.text"%name,"w",encoding='utf-8')as f:
f.write("当前用户%s已被锁定"%name)
print("多次输入错误,用户被锁定5s")
time.sleep(5)
os.remove("%s.text"%name)
break
else:
print("用户不存在")
原文地址:https://www.cnblogs.com/bk134/p/12411297.html