21-8-13学习内容
昨日学习内容回顾
三大逻辑运算符
1.逻辑运算符
and 和
连接的多个条件必须同时满足结果,否则就是不成立
print (1<2 and 2>1 and 3<9)
# True
or 或
连接的多个条件只要满足一个即可。
print(1>2 or 5>1) # True
not 对条件取反值
print(not True)
2.成员运算符 in
用来判断某个具体数据是否在一个整体内部
name_list=['aaa','bbb','ccc'] guess_name=input('name:') print(guess_name in name_list )
# aaa True
# 111 false
也可以运用not
print(guess_name not in name_list )
3.身份运算符 id()
用来寻找 数据变量值存在于内存的内存地址。
# 两个变量值相等,id不一定相同
# id值相同,两个变量值一定相同。
==用来表示id相同,=指的是赋值内容
流程控制:
指的是执行程序的流程主要分为三种结构
1:顺序结构 指从上往下执行的代码叫做顺序结构
name=456 print(456)
2:分支结构 根据不同的执行条件执行不同的流程
age='18' age=input('输入你的年龄') if age>'18': print('成人') elif age<'18': print('未成年')
# 在Python中,我们通过代码缩进的来表示从属关系:
# 如果上面的代码没有缩进 下面的代码缩进了 就表示下面的代码是属于上面的代码,下面的代码是否执行,就要取决于上面的代码。
# 通常首行缩进4个字符,属于同一个从属关系的代码必须保持相同的缩进量。如果上一行代码的结尾出现了: 那么下一行代码一定要缩进
# 不是所有的代码都能用有子代码。
3:while 语法结构 条件成立之后执行的循环体代码
time=1 while True: if time>3: print('机会用完') break age=(input('输入你的年龄 三次机会')) age=(int(age)) if age >18: print('猜大了') time+=1 elif age<18: print('猜小了') time+=1 else: print('猜对了') break
-
-
数据类型的内置方法
-
字符编码
-
for循环
name_list = ['jason', 'tony', 'kevin', 'jerry'] for name in name_list: print(name)
# 语法注释:
for 适合用于循环取值方面,
for 变量名 in 可迭代取值对象(字典,列表,元组等。)
for 循环不需要添加结束条件 会随着取值完毕自动结束。
当值没有明确的类别时,可以取i ,k,j, item等。
eg:
res=‘hello Python’ for i in res: print(i)
# for循环字符串会将字符串里面的单个字符赋值给变量名。
for循环应用于字典:
dict= {'name':'shw','hobby':'game','age':'25'}
for k in dict:
print(k)
# for 循环字典只会取出字典的k值,无法取出v值
# 容器类型:内部可以存放多个元素数据的类型都可以称之为容器类型,如列表 字典 元组 集合。
在此基础上还可以对字符串进行循环取值。
range用法:
for i in range(5): print(i) # 一个参数,默认为0-4 顾头不顾尾。
for i in range(0,5):
print (i) # 两个参数,第一个是起始位,包含在内,第二位是终止位,不包含。
for i inrange (0,250,25):
print (i)# 第三个参数指的是递增量。指定数字的间隔数。类似于产生一个等差数列。
-
数据类型的内置方法
# 整形 int的类型转换。
n=‘11’ print(int(n)) # 正确 n=‘11.11’ print(int(n))# 错误 无法转换11.11小数。 n=‘max’ print(int(n)) # 错误 ,数字意外无法转换。
print(bin(100))# 0b1100100 # 十进制转换成二进制。 print(oct(100))# 0o144 # 十进制转换成八进制。 print(hex(100))#0x64 # 十进制转换成16进制 # 若需其他进制抓换成十进制 print(int('0b1100100'),2) print (int('0o144'),8) print (int('0x64',16)
# 0b开头是2进制数,0o开头是8进制数,0x开头是16进制数。
""" 补充:用句点符 可以查看数据的所有方法, 数据类型. pycharm会自动列出该数据的所有方法。 """
浮点型float:
数据类型转换。
n='11' print(float(n)) # 11.0 n='11.11' print(float(n)) # 11.11 n='max’ print(float(n)) # 错误不是数字类型。
字符串str的类型转换:
1:str可以将任意数据类型转换成字符串。
# 1.统计字符个数(len) res='hello world' print(len(res) # 11 空格也算一个字符 # 2.索引取值 res='hello world' print(res[0]) # h # 3.切片取值 res='hello world' print(res[1:5])# ello 从1的位置取到4的位置(顾头不顾尾) # 4.步长 res='hello world' print(res[1:8:2])# el o 从1的位置取到4的位置,每位间隔为1个 # 5.移除字符串首尾制定的字符 strip lstrip(左) rstrip(右) name='$$max$$' print(name.strip('$')) # max print(name.lstrip('$')) # max$$ print(name.rstrip('$')) # $$max
# 例题: name=input('输入你的姓名>>>').strip() # 如果条件后加了.strip括号内不加内容默认为删除空格 if name=='jason': print('输入成功') else: print('输入错误')
# 6.按照制定的字符切割数据 res= 'max|123|read' print(res.split('|')) # ['max','123','read'] print(res.split('|' ,maxsplit=1)) # ['max', '123|read'] print(res.rsplit('|' ,maxsplit=1)) # ['max|123', 'read']
# 7.大小写转换。 res='UT6Rd' print(res.upper()) # UT6RD print(res.lower()) # ut6rd print(res.isupper()) # False print(res.islower()) # False print('name'.islower())# True
#8.判断字符串是否是纯数字。 可以用做程序的附加条件 print('123'.isdigit()) # true print('11.56'.isdigit())# false print('max123'.isdigit())# false
#9.统计某个数字出现的次数。 name='my name is max max max' print(name.count('max')) # 3
#10.替换制定的字符。 name='my name is max max max' print(name.replace('max','least')) # my name is least least least print(name.replace('max','least',1))# my name is least max max 1指的是替换几个
#11.按照指定的字符拼接字符串 res=['max','shw','lalala'] print('-'.join(res)) # max-shw-lalala
列表list的类型转换:
# 只能够转for循环的数据类型。
print(list('hello world'))
# ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# 1 统计元素的个数 l1=[11,55,11.22,22] print(len(l1)) # 4
#2 索引取值 l1=[1,0,55,'max'] print(l1[3]) # max
# 3 切片取值 l1=[1,0,55,'max'] print(l1[1:4]) # [0, 55, 'max'] 顾头不顾尾
# 4步长(设置间隔距离) l1=[1,0,55,'max'] print(l1[1:4:2]) # [0, 'max'] 顾头不顾尾
# 5 添加元素 #5.1 尾部追加元素 l1=[1,0,55,'max'] l1.append('lalala') print(l1) # [1, 0, 55, 'max', 'lalala'] l1=[1,0,55,'max'] l1.append(['0111','222','33']) print(l1) # [1, 0, 55, 'max', ['0111', '222', '33']] #无论是什么数据类型都被认为一个元素# 5.2 指定位置插入位置 l1=[1,0,55,'max'] l1.insert(1,'[111,222]) [1, [111, 222], 0, 55, 'max'] # 1指的是位置 # 5.3 扩展列表 l1=[1,0,55,'max'] l1.extend([111,222]) print(l1) # [1, 0, 55, 'max', 111, 222]
# 6 删除元素 # 6.1通用的删除操作 l1=[1,0,55,'max'] del l1[0] print(l1) # [0, 55, 'max'] # 6.2 弹出元素 l1=[1,0,55,'max'] name=l1.pop(3) print(l1,name) # [1, 0, 55] max # 6.3 删除元素 l1=[1,0,55,'max'] name=l1.remove('max') print(l1,name) #[1, 0, 55] None
# 如何记住什么时候添加索引值或者是值
# 可以按住crtl+左键 对应操作例如‘remove’’ 如果是value就是填值 如果是index 就是填的索引值
#7.统计元素出现的次数 l1=[11,22,33,1,11,22,22,22] print(l1.count(11)) # 2
#8 排序 l3 = [55, 44, 22, 33, 11, 99, 77, 88] l3.sort() print(l3) #[11, 22, 33, 44, 55, 77, 88, 99] 升序 l3 = [55, 44, 22, 33, 11, 99, 77, 88] l3.sort(reverse=True) print(l3)# [99, 88, 77, 55, 44, 33, 22, 11] 降序
#字典dict转换数据类型
#1 统计键值对个数 dict={'name':'max','age':'25','hobby':'game'} print(len(dict)) # 3
# 2.索引取值 dict={'name':'max','age':'25','hobby':'game'} print(dict.get('name')) # max 如果不键存在会出现none
# 3 设置值 dict={'name':'max','age':'25','hobby':'game'} dict['name']='xam' print(dict) # {'name': 'xam', 'age': '25', 'hobby': 'game'} 如果键存在就是修改 dict={'name':'max','age':'25','hobby':'game'} dict['height']='180' print(dict) # {'name': 'max', 'age': '25', 'hobby': 'game', 'height': '180'} # 如果键不存在就是新建
#4 删除值 (键值对需要是一个整体) dict={'name':'max','age':'25','hobby':'game'} res=dict.pop('name') print(dict,'name') # {'age': '25', 'hobby': 'game'} name 弹出
# 5.三个小方法 dict={'name':'max','age':'25','hobby':'game'} print(dict.keys()) # dict_keys(['name', 'age', 'hobby']) k值 print(dict.values()) # dict_values(['max', '25', 'game']) v 值 print(dict.items()) # dict_items([('name', 'max'), ('age', '25'), ('hobby', 'game')]) kv键值对
# 集合
# 集合内元素是无序的 1.去重 集合内不允许出现重复的元素 会自动去重 2.关系运算 交叉并集 举例:共同好友 共同关注 共同点赞
# 1.求共同好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1&s2) # {'max', 'jaxon'}
# 2.求s1 独有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1-s2) # {'jack', 'tony'}
# 3.求s2独有好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2-s1) # {'ada', 'tim'}
# 4. 求两个人所有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2|s1) # {'jaxon', 'jack', 'ada', 'tony', 'max', 'tim'}
# 5.求两个各自独有的好友 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s2^s1) # {'ada', 'jack', 'tim', 'tony'}
# 6. 父集 子集 s1={'max','jaxon','tony','jack'} s2={'max','tim','jaxon','ada'} print(s1<s2) # False print(s1>s2) # False
----------------------------------------------------------------------------------------------------------------------
作业
1.l = [11,22,33,44,55,66,77,88,99]
将列表中大于60的存入字典k1键对应的列表中
小于60的存入字典k2键对应的列表中
d = {'k1':[],'k2':[]}
l = [11,22,33,44,55,66,77,88,99] d = {'k1':[],'k2':[]} for i in l: if i> 60: d['k1'].append(i) elif i<60: d['k2'].append(i) print(d)
2.l = [11,22,33,22,11,22,66,55,77,99]
对列表元素进行去重
l = [11,22,33,22,11,22,66,55,77,99] l=(set(l)) print(l)
3.关系运算
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合
#1 pythons={'jason','egon','kevin','ricky','gangdan','biubiu'} linuxs={'kermit','tony','gangdan'} print(pythons&linuxs)
#2 pythons={'jason','egon','kevin','ricky','gangdan','biubiu'} linuxs={'kermit','tony','gangdan'} print(pythons|linuxs)
# 3 pythons={'jason','egon','kevin','ricky','gangdan','biubiu'} linuxs={'kermit','tony','gangdan'} print(pythons-linuxs)
# 4 pythons={'jason','egon','kevin','ricky','gangdan','biubiu'} linuxs={'kermit','tony','gangdan'} print(pythons^linuxs)