内存管理
# 1. Cpython解释器的垃圾回收机制 # 什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾 # 引用计数增加 # age=18 # 18的引用计数等于1 # x=age # 18的引用计数等于2 # print(age) # print(x) # 引用计数减少 # age=19 #18的引用计数等于1 # print(age) # del x #18的引用计数等于0 # 2. 变量值的三个特征: # id: 反映的是内存地址 # type:数据类型 # 值: # age=18 # # print(id(age)) # print(type(age)) # print(age) #总结: # 2.1. id相同,值一定相同 # 2.2. 值相同,id可以不同 ''' >>> x='name:egon age:18***' >>> y='name:egon age:18***' >>> id(x) 2847698422856 >>> id(y) 2847698422928 ''' # x=11111111111111111111111111231231231231222222222222 # y=11111111111111111111111111231231231231222222222222 # # print(id(x)) # print(id(y)) #3. is 与 == # ==:值是否相等 # is:id是否相等 #4. 可变类型与不可变类型 # 可变类型: 值改变,id不变,证明就是在改变原值 # 不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型 # x=10 # print(id(x)) # x=11 # print(id(x)) l=['a','b','c'] print(id(l)) l[0]='A' print(id(l)) # print(l)
python2中与用户交互
# 1. 在python3中只有一个input: # 特点:会用户输入的任意内容都存成str类型 # x=input('>>>: ') #x='123123123' # print(type(x)) # salary=input('>>: ') #salary='3000' # salary=int(salary) # print(salary * 12) # # 2. 在python3中只有一个raw_input,与python3的input一模一样 # x=raw_input('>>>: ') # 要求用户必须输入一个明确的类型,输入什么类型就存成什么类型 x=input('>>>: ')
数据类型的基本使用
# 一: 数字类型 #1. 整型int #作用:用来记录年龄、等级、各种号码状态 #定义: # age=10 #age=int(10) # print(type(age)) #使用: # print(age + 1) # print(age > 3) #2. 浮点型float #作用:用来记录身高、体重、工资状态 #定义: # salary=3.1 #salary=float(3.1) # print(type(salary)) #使用: # print(3.1 + 2.3) # print(3.1 > 2.3) # print(3.1 > 2) # print(3.1 + 2) # 二:字符串类型str # 作用:用来记录描述性质状态,比如名字、性别 # 定义:在单引号('')、双引号("")、三引号内(''' ''',""" """),包含一系列的字符 x='abc' # x=str('abc') # print(type(x)) y="abc" z=""" abc xxxx """ # print(type(x)) # print(type(y)) # print(type(z)) # msg='my name is "egon"' # 使用: # print('abc'+'def') # 仅限于str类型直接相加 # print('abc'*10) # *的只能是数字 # 了解:ASCII表 # x='abcdef' # y='z' # print(x > y) # print('a' > 'Z' ) # print('a' > 10 ) # 三:列表类型list # 作用:用来记录多个值,用索引对应值,索引反映是位置 # 定义:在[]内用逗号分隔开多个任意类型的值 # l=[1,3.1,'xxx',['a','b','c']] #l=list(...) # print(type(l)) # 使用 # print(l[0]) # print(l[2]) # print(l[3][0]) # students_info=[ # ['egon',18,['play',]], # ['alex',18,['play','sleep']] # ] # # print(students_info[1][2][0]) # 四:字典类型dict # 作用:用来记录多个值,用key对应value,其中key对value有描述性的功能 # 定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常应该是str类型 # d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...) # print(type(d)) # 使用: # print(d['x']) # print(d['m']['aaa']) # print(d['z'][1]) # 列表的方式 # name age gender compay_info # emp_info=['egon',18,'male',['Oldboy','SH',200]] # print(emp_info[1]) # print(emp_info[3][2]) # 字典的方式 # emp_info={'name':'egon','age':18,"gender":'male','company_info':['Oldboy','SH',200]} # print(emp_info['age']) # print(emp_info['company_info'][0]) # names=['egon','alex','kevin'] # dic={'name1':'egon','name2':'alex','name3':'kevin'} # 五:布尔类型:True,Flase # print(type(True)) # print(type(False)) # tag1=True # tag2=True # print(id(tag1)) # print(id(tag2)) # age=18 # print( age > 18) # 所有数据类型自带布尔值 # 布尔值为假的数据类型:0,None,空 # print(bool([])) # print(bool('')) # print(bool(None)) # 六 None # print(type(None))
运算符与if判断的基本用法
#01 比较运算符 #> >= #< <= #== #!= # print(10 != 11) # 了解 # x=None # print(x == None) # print(x is None) # l1=['abc',1,['a','b','c']] # l2=['abc','aa',] # print(l2 > l1) #02 逻辑运算符 #and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True # print(10 > 9 and 3 > 2 and 'egon' == 'egon' and True) #or:连接左右两个条件,两个条件成立任意一个or运算的结果就为True # print(False or False or True or False or 3 > 10) # res=(True or (False and True)) or ((False or True) and False) #res=(True or False) or (True and False) #res=True or False # print(res) #not # print(not 10 > 3) # x=None # print(not x is None) # print(x is not None) # age1=18 # age2=19 # print(age2 is not age1) # name_bk='egon' pwd_bak='123' name=input('please input your name: ') pwd=input('please input your password: ') if name == name_bk and pwd == pwd_bak: print('login successfull') print('login successfull') print('login successfull') print('login successfull') print('login successfull') else: print('username or password error')
今日作业
作业: 一、整理博客,复习今天上课所讲知识点 二、今日练习题 1、python test.py执行的三个阶段是什么?在哪个阶段识别文件内的python语法? 2、将下述两个变量的值交换(选做题,涉及知识点为变量的赋值运算) s1='alex' s2='SB' 3、判断下述结果 msg1='alex say my name is alex,my age is 73,my sex is female' msg2='alex say my name is alex,my age is 73,my sex is female' msg1 is msg2 msg1 == msg2 4、什么是常量?在python中如何定义常量 5、有存放用户信息的列表如下,分别存放用户的名字、年龄、公司信息 userinfo={ 'name':'egon', 'age':18, 'company_info':{ 'cname':'oldboy', 'addr':{ 'country':'China', 'city':'Shanghai', } } } 要求取出该用户公司所在的城市 students=[ {'name':'alex','age':38,'hobbies':['play','sleep']}, {'name':'egon','age':18,'hobbies':['read','sleep']}, {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']}, ] 取第二个学生的第二个爱好 6、 students=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':38,'sex':'fmale'}, {'name':'wxx','age':48,'sex':'male'}, {'name':'yuanhao','age':58,'sex':'fmale'}, {'name':'liwenzhou','age':68,'sex':'male'}, ] 要求循环打印所有学生的详细信息,格式如下 <name:egon age:18 sex:male> <name:alex age:38 sex:fmale> <name:wxx age:48 sex:male> <name:yuanhao age:58 sex:fmale> <name:liwenzhou age:68 sex:male> 7、编写程序,#根据用户输入内容打印其权限 ''' egon --> 超级管理员 tom --> 普通管理员 jack,rain --> 业务主管 其他 --> 普通用户 ''' 8、编写程序,实现如下功能 # 如果:今天是Monday,那么:上班 # 如果:今天是Tuesday,那么:上班 # 如果:今天是Wednesday,那么:上班 # 如果:今天是Thursday,那么:上班 # 如果:今天是Friday,那么:上班 # 如果:今天是Saturday,那么:出去浪 # 如果:今天是Sunday,那么:出去浪 以下为选做题: 9、while循环练习 #1. 使用while循环输出1 2 3 4 5 6 8 9 10 #2. 求1-100的所有数的和 #3. 输出 1-100 内的所有奇数 #4. 输出 1-100 内的所有偶数 #5. 求1-2+3-4+5 ... 99的所有数的和 #6. 用户登陆(三次机会重试) #7:猜年龄游戏 要求: 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出 #8:猜年龄游戏升级版 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如何猜对了,就直接退出 10、编写计算器程序,要求 1、用户输入quit则退出程序 2、程序运行,让用户选择具体的计算操作是加法or乘法or除法。。。然后输入数字进行运算 3、简单示范如下,可以在这基础上进行改进 while True: msg=''' 1 加法 2 减法 3 乘法 4 除法 ''' print(msg) choice = input('>>: ').strip() num1 = input('输入第一个数字:').strip() num2 = input('输入第二个数字:').strip() if choice == '1': res=int(num1)+int(num2) print('%s+%s=%s' %(num1,num2,res)) 11、选择题,预习字符串内置方法,做如下练习题 # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # 1) 移除 name 变量对应的值两边的空格,并输出处理结果 # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果 # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果 # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果 # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。 # 6) 将 name 变量对应的值变大写,并输出结果 # 7) 将 name 变量对应的值变小写,并输出结果 # 8) 请输出 name 变量对应的值的第 2 个字符? # 9) 请输出 name 变量对应的值的前 3 个字符? # 10) 请输出 name 变量对应的值的后 2 个字符? # 11) 请输出 name 变量对应的值中 “e” 所在索引位置? # 12) 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。