python知识心得06 数据类型 内置方法

昨日内容回顾

  • 成员运算

    in
    # 判断在...里面
    a = 10
    list = [1, 2, 3, 4, 5, 10 ]
    print(a in list)
    
    not in
    # 不在...里面
    print('c' not in 'hello world aaa')
    
    # 字典参与成员运算 只有key参加 value无法参与
    
  • 身份运算

    ==
    #	仅仅判断值是否相等 
    is
    #	判断内存地址是否相等
    l1 = ['132', 11, 'abc']
    l2 = ['132', 11, 'abc']
    print(id(l1),id(l2))
    print(l1 == l2)  # True
    print(l1 is l2)  # False    
    
    """
    值相等内存地址不一定相等
    内存地址相等值一定相等
    """
    
  • 流程控制

    顺序结构
    分支结构
    循环结构
    
    """
    代码的缩进
    	在python通过缩进来表示代码的从属关系
    	缩进一般采用四个空格
    	并不是所有的代码都可以拥有子代码
    	同属一个关键字的多行子代码一定要保持相同的缩进量
    ps:遇到冒号 下一行代码必缩进
    """
    
    if判断
    	"""
    	if 条件1:
    		代码1
    		代码2
    		...
    	elif 条件2:
    		代码1
    		代码2
    		...
    	else:
    		代码1
    		代码2
    		...
    	"""
        1.组合使用之后走一个关键字的子代码
        2.条件可以是逻辑运算符连接的多个条件
        ps:if嵌套
    
    while循环
    	"""
    	while 条件:
    		代码1
    		代码2
    		...
    	"""
        ps:while嵌套
        while+break
        	结束本层循环
        while+continue
        	结束本次循环
        while+else
        	在while没有被主动打断的情况下正常运行结束
            则会走else
    
    for循环
    	"""
    	for 变量名 in 可迭代对象:  字符串 列表 字典 元组...
    		代码1
    		代码2
    		...
    	"""
        1.range()
        	range(10)	  只写一个数字则从0开始
            range(1,10)	   写两个则顾头不顾尾
            range(1,10,2)  第三个参数表示间隔几位
             https://movie.douban.com/top250?start=0&filter=
             https://movie.douban.com/top250?start=25&filter=
             https://movie.douban.com/top250?start=50&filter=
             https://movie.douban.com/top250?start=75&filter=
                for i in range(0,255,25):
                    print('https://movie.douban.com/top250?start=%s&filter='%i)
          	# 注意python2与python3的区别
            	range()
                xrange()
        for+break
        	结束本层循环
        for+continue
        	结束本次循环
        for+else
        	在for没有被主动打断的情况下正常运行结束
            则会走else
        ps:for嵌套
    

今日内容概要

  • 作业讲解

  • 数据类型的内置方法

    整型与浮点型
    
    字符串
    
    列表
    
  • 可变类型与不可变类型

今日内容详细

整型与浮点型

# ==============整型基本使用==================
# 1、用途
    # 年龄 生日 整数类型
    
# 2、定义方式
    age = 18  # age = int(18)
    
# 3、类型转换
# int()  将括号内的数据转成整型
# print(int(123))     #123
# print(int('123'))     #123
# print(int('[1,2,3,4]'))   # 报错,非整型
# print(int('hello world'))   # 报错,非整型
# print(int('11.11'))  # 待转换的数据内部只能是纯数字
# print(int(11.11))  # 11

# 4、进制转换
"""
0b开头表示二进制数
0o开头表示八进制数
0x开头表示十六进制数
"""

print(bin(50))  # 将十进制的100转换成二进制对应的数    0b110010
print(oct(50))  # 将十进制的100转换成八进制对应的数    0o62
print(hex(50))  # 将十进制的100转换成十六进制对应的数  0x32

# print(int('0b110010',2))  # 50
# print(int('0o62',8))  # 50
# print(int('0x32',16))  # 50

# ==============浮点型基本使用==================
# 身高 体重 薪资...
# height = 192.1  # height = float(192.1)
# print(float(192.1))   # 192.1
# print(float('192.1'))   # 192.1
# print(float('hello world'))  # 无法将字符串转为浮点型
# print(float(192))  # 192.0   

字符串类型

# 作用:名字,性别,国籍,地址等描述信息

# 定义:在单引号\双引号\三引号内,由一串字符组成
name = 'hello world!'

# 优先掌握的操作:
# 1、按索引取值(正向取+反向取) :只能取
'''
索引是从0开始的
'''
print(name[0])   # h  自左到右第一个
print(name[-1])  # !  -1表示最有一个元素
print(name[8])   # r  自左到右第八个字符
print(name[-4])  # r  自右向左第四个字符

# PS:正数表示从左往右  负数从右往左

# 2、切片 (顾头不顾尾,步长)
'''截取某一段内容'''
print(name[1:5])  # 1 2 3 5 "ello" 顾头不顾尾
print(name[-1:-5:-1])  # 默认的切片方向都是从左往右   -1修改成从右往左  !dlr
print(name[1:4:2])  # 1 3  第三个参数表示步长  el

# 3、长度len
'''统计字符串里面的字符个数'''
print(len(name))  # 12   空格也算字符

# 4、成员运算in和not in
print('hello' in name)
print('jason' not in name)

# 5、移除指定的首尾字符strip(******)
username = input('username>>>:')  # 'simon '
# # 将首尾空格移除
username = username.strip()
if username=="simon":
    print("欢迎欢迎 热烈欢迎!")
else:
	print('登录失败')
    
# e.x.    移除指定首、尾的所有字符/空格
# username1 = '$$j$s$o$n$$'
# username2 = '  jason  '
# print(username1.strip('$'))  # 移除指定首、尾的所有字符
# print(username2.strip())  # 默认移除首、尾的所有空格

# n1 = '$$jason$$'
# # 移除首指定的字符
# print(n1.lstrip('$'))  # jason$$       left
# # 移除尾指定的字符
# print(n1.rstrip('$'))  # $$jason       right

a = "###$$$simon$$$###"
print(a.lstrip("$"))  # ###$$$simon$$$###
# PS:l/rstrip只移除左右最开头的字符 

# 6、切分split(******)
'''
按照指定g字符串
'''
res = 'simon|123|write'
print(res.split('|'))  # ['simon', '123', 'write']
# # 1.指定切割的字符不保留
# # 2.切割之后的结构是一个列表(重要)
res.split('|', maxsplit=1)  # ['simon', '123|write']  从左往右切割指定的次数
print(res)
print(res.rsplit('|', maxsplit=1))  # ['simon|123', 'write']  从右往左切割指定的次数

# 7、循环
for i in name:
    print(i)  # 依次获取字符串中单个单个的字符
    # h
    # e
    # l
    # l
    # o
    # 
    # w
    # o
    # r
    # l
    # d
    # !
    
# 8.str将其他字符类型转化为字符串
# name1 = 'simon'  # str('jason')
# print(type(str(18)))
# print(type(str(11.11)))
# print(type(str('hello')))
# print(type(str([1,2,3,4])))
# print(type(str({'name': 'simon'})))
# print(type(str(True)))

# 9.将字母转化成大小写
res = 'My NAmE Is simon 7788'
# 将所有的英文字母转成大写
print(res.upper())  # MY NAME IS SIMON 7788
# 将所有的英文字母转成小写
print(res.lower())  # my name is simon 7788

"""图片验证码校验 忽略大小写"""
code = 'SSIWss3'
my_code = input('code>>>:')
if code.upper() == my_code.upper():
    print('验证码正确')
print(code.isupper())  # False  字符串内部所有的英文字母是否是全大写
print(code.islower())  # False  字符串内部所有的英文字母是否是全小写

# 10.判断是否以字符串开头/结尾
res = 'zhangsan lisi wangwu lixiaoliu'
#判断字符串是否以zhangsan开头
print(res.startswith('zhangsan'))  # True
#判断字符串是否以lixiaoloiu结尾
print(res.endswith('lixiaoliu'))  # True


# 11.字符串格式化输出
# %s %d
# format
#第一种  与%s一致    按照个数位置 一一传值
res = 'my name is {} my age is {}'
print(res.format('simon',18))
#第二种  按照索引取值     可以反复使用
res = 'my name is {0} my age is {1} {0} {1} '
print(res.format('simon',18))
#第三种  指名道姓取值     可以反复使用
res = 'my name is {name} my age is {age} {name} {age} '
print(res.format(name='simon',age=18))


# 12.统计字符串中指定字符出现的个数
res = 'simon a a a a  dskajkksa a  sdds d  ds  a  a  a wqd s '
# 统计字符串中 指定字符出现的个数
print(res.count('a'))  # 10
print(res.count('a', 1, 10))  # 2  指定范围统计

# 13.字符串大小写注解
res = 'my name is simon dskjadjksajdkas ssad'
print(res.title())  # 将所有英文单词首字母大写
print(res.capitalize())  # 首字母大写 后面统一变小写

# 14.判断字符串是否为特殊符号
res = 'sdewqe圣的撒肯定就开始'
print(res.isalpha())  # 判断非数字 特殊符号
# 如果有数字的话报错
res = 2
print(res.isalpha())  # 报错 出现整型

# 15.判断是否是纯数字
# guess_age = input('请输入您的年龄>>>:')
# # 判断用户输入的是否是纯数字
# if guess_age.isdigit():
#     # 将字符串的数字转为整型的数字
#     guess_age = int(guess_age)  # 暂且忽略
# else:
#     print('请输入纯数字')



# 16.替换
res = 'my name is simon simon simon'
#将字符串中所有的simon替换成NB
print(res.replace('simon','NB'))  # 全局替换
print(res.replace('simon','NB',2))  # 局部替换



# 17.将列表多个元素拼接成字符串
res = ["zhangsan", "lisi", "wangwu", "lixiaoliu"]
res1 = ["zhangsan", "lisi", "wangwu", "lixiaoliu",123] 
print('|'.join(res))  # zhangsan|lisi|wangwu|lixiaoliu
print(type(res1[4]))   #123 为int
print('|'(.join(res1))  # 报错 只能是字符串类型拼接

列表内置方法

# 中括号括起来 内存可以存放多个元素
# 元素与元素之间逗号隔开 元素可以是任意数据类型

# name_list = ["zhangsan", "lisi", "wangwu"]  # name_list = list(["zhangsan", "lisi", "wangwu"])

# print(type(list(18)))  # 不能 int对象是不可迭代的
# print(type(list(11.11)))  # 不能 float对象是不可迭代的
# print(type(list('hello')),list('hello'))  # 可以  class:list   ['h', 'e', 'l', 'l', 'o']
# print(type(list([1,2,3,4])))  #list
# print(type(list({'name':'jason'})),list({'name':'jason'}))  # 可以  ['name']
# print(type(list(True)))  # 不能
'''能够支持for循环的数据 都能够被list转换成列表'''

# 1.索引取值
print(name_list[0])  #zhangsan
print(name_list[-1])  #wangwu

# 2.切片操作
print(name_list[0:2])  # ['zhangsan', 'lisi'] 顾首不顾尾
print(name_list[0:2:2])  # ['zhangsan'] 最后的2表示步数,此取值为 0 2 2不满足条件,不显示
print(name_list[-1:-3:-1])  # ['wangwu', 'lisi'] 自右向左取值,步数为1,此取值为 -1 -2

# 3.统计列表中元素的个数
# print(len(name_list))  # 3

# 4.列表元素的CURD(增删改查)
name_list[1] = '里斯威武'
print(name_list)

# 末尾追加单个元素
name_list.append('lixiaoliu')
print(name_list)  # ["zhangsan", "lisi", "wangwu", "lixiaoliu"]
name_list.append([11,22,33,44])  # ["zhangsan", "lisi", "wangwu", "lixiaoliu", [11, 22, 33, 44]]
print(name_list)

# 插入元素
name_list.insert(0,'zhuer')
print(name_list)  # ['zhuer', 'zhangsan', 'lisi', 'wangwu']

# 扩展列表
l1 = [11,22,33,44,55,66,77]
# plan1
# for i in l1:
#     name_list.append(i)
# print(name_list)

# plan2
name_list.extend(l1)  # extend等价于for+append
print(name_list)  # ['zhangsan', 'lisi', 'wangwu', 11, 22, 33, 44, 55, 66, 77]

# 通用的删除操作
del name_list[1]
print(name_list)  # ['zhangsan', 'wangwu']

res1 = name_list.remove('lisi')  # 指名道姓的删除
print(name_list)  # ['zhangsan', 'wangwu']
print(res1)  # None

res = name_list.pop()  # 默认尾部弹出元素
print(name_list)  # ['zhangsan', 'lisi']
print(res)  #wangwu

res = name_list.pop(1)  # 默认指定索引位置的元素
print(name_list)  # ['zhangsan', 'wangwu']
print(res)  # lisi


# l1 = [11,22,33,3,3,3,2,3,23,4,34,3,4,3,4]
# print(l1.count(3))  # 6  统计列表中某个元素出现的次数

# name_list.clear()  # 清空列表
# print(name_list)  # []


l2 = [11,88,22,44,33,77,66,55]
# # l2.sort()  # 排序  默认是升序
# # print(l2)  # [11, 22, 33, 44, 55, 66, 77, 88]
# l2.sort(reverse=True)  # reverse=True 降序
# print(l2)  # [88, 77, 66, 55, 44, 33, 22, 11]

# l2.reverse()  # 倒序
# print(l2)  # [55, 66, 77, 33, 44, 22, 88, 11]

可变不可变

"""
可变类型:值改变 id不变,证明改的是原值,证明原则是可以被改变的。
不可变类型:值变了 id也变了,证明产生新得值,压根没有改变原值,证明原值是不可以被修改的。
"""
# 不可变类型#
# int,float,str,bool 都是不可变类型
a = 1
print(id(a))  # 140710414259872
a = 2
print(id(a))  # 140710414259904

# 可变类型
# 列表,字典为可变类型
# l1 = [11,22]
# print(id(l1))  # 2133952624128
# l1.append(666)
# print(id(l1))  # 2133952624128
posted @ 2021-06-02 19:00  虾虾78  阅读(53)  评论(0)    收藏  举报