======================================基本使用======================================
1、用途
2、定义方式
3、常用操作+内置的方法
======================================该类型总结====================================
存一个值or存多个值
有序or无序
有序:但凡有索引的数据都是有序的
无序:那一定是不能索引取值了呗
可变or不可变
可变类型:值改变的情况下,id不变,说明改的是原值,则为可变
不可变类型: 值改变的情况下,id一定变了,则是不可变
总结是一句话:因为值都发生了变化,看id,id不变就可变类型,id变就不可变类型
x = 10
print(id(x))
y = 11
print(id(y))
看x,y id的变化 判断他们的类型
数字类型
整型(int)
======================================基本使用======================================
1、用途:存年龄,QQ,电话
2、定义方式:
age = '18' # age = int(18)
print(int('ahjsdh')) print(int(1.155165))
整型的转换只能转换纯数字的整数字符串,这就说明了小数点都不能带,否则报错。所以上面两种结果都是报错
进制之间的转换 非十进制转换十进制 1 二进制转十进制 # 二进制数字只包含0,1 二进制10转换为十进制 转换算法 1*(2**1) + 0*(2**0) # 2 2 八进制转十进制 # 八进制数字只包含0-7 八进制235转换为十进制 转换算法 2*(8**2) + 3*(8**1) +5*(8**0) # 157 3 十六进制转十进制 # 十六进制包含0-9 A-F A-F类似10-15 十六进制217转换为十进制 转化算法 2*(16**2) + 1*(16**1) +7*(16**0) # 535 十进制转换非十进制 十进制转换为二进制 print(bin(12)) # 0b1100 0b表示后面的数字是二进制数 十进制转换为八进制 print(oct(12)) # 0o14 0o表示后面的数字是八进制数 十进制转换为十六进制
print(hex(12)) # 0xc 0x表示后面的数字是十六进制数
直接将其他进制数转为十进制数
print(int('1100',2))
print(int('14',8))
print(int('c',16))
最后的数字就是代表之前是几进制的 这样之后直接转换成十进制
3、常用操作+内置的方法
======================================该类型总结====================================
存一个值or存多个值
存一个值
有序or无序
有序:但凡有索引的数据都是有序的
可变or不可变
浮点型:float
======================================基本使用======================================
1、用途:存薪资,身高,体重等一系列带小数点的数字
2、定义方式:salary = 1.1 # salary = float(1.1)
字符串
字符串 str : 字符串内所有都算一个字符包括空格
s = 'hello baby' # str('hello baby') s1 = str([1,2,3,4]) print(type(s1)) s2 = str({'name':'jason','password':123}) print(type(s2))
字符串是一对引号之内的看做一整个数据 但是里面的字符是可以按照索引,字符串可以将列表和字典都直接转为字符串
======================================基本使用======================================
1、用途:用来记录具有描述性的数据,个人资料,其实什么都能记
2、定义方式:三种方式:
单引号 '内容'
双引号 ‘"内容"
三引号 """内容""" # 三引号之前有变量名就是字符串,没有才是注释
3、常用操作+内置的方法
======================================该类型总结====================================
存一个值or存多个值
存一个值
有序or无序
有序
可变or不可变
不可变类型
常用内置方法
1 按照索引取值(正取向+反取向): 只能取值
a = "hello nice to meet you!" print(a[0]) # h
2 切片(顾头不顾尾,步长)
从一个大的字符串中,取出自己想要的一部分 [头:尾:步长] 这里都是按照索引 步长(自己设定)可以不写默认为1格
正向的 索引从0开始
a = "hello nice to meet you!" print(a[5:11]) # nice n前有一个空格 步长没写默认为1 print(a[4:8:1]) # o ni 步长为1的 print(a[4:8:2]) # on 步长为2的 负向的 print(a[-1]) # ! 这个是取值 从右往左第一个是! 反向的所有是从-1开始 print(a[0:5:-2]) # 空白的 因为切片取值默认是从左向右的这个起点是0 这就例如让你面向前走但是步子向后迈,NB反正我不行 print(a[9:0:-1]) # ecin olle 因为切片取值默认是从左向右的这个起点是9 print(a[-2:-10:-2]) # uyte 这就是反着走了,只不过是面向前方
3 长度 len :字符串统计的是个数
a = "hello nice to meet you!" print(len(s)) # 15 长度是15
4 成员运算 in 和 not in 用来判断一个某个或某段字符在不在你的大字符串内
a = "hello nice to meet you!" print('egon'in a ) # False print('hello'in a) # True print('egon' not in a) # True print('meet' not in a) # False
5 去掉字符串内左右两边的字符包括空格 stirp, 中间的不行 默认去除首尾的
a = '!@#$% hello ^&*()' print(a.strip(' !@#$%')) # hello ^&*() print(a.strip('!@#$%^&*() ')) # hello 可以用于登陆系统手抖的小哥哥们 username = input('please your username>>>:').strip('!@#$%^&*() _+|-=* \ ') print(username) lstrip,rstrip name = '!@#!@# james !@#!@#' print(name.lstrip(' !@#')) # james !@#!@# 去除左边的想取消的符号 print(name.rstrip(' !@#')) # !@#!@# james 去除右边的想取消的符号
6 split 可以将字符串内任意字符作为切分目标 切分结果是列表 可以按照索引取值 默认从左往右切分
msg = '你说的对 hello,xiao|||gui,' print(msg.split('你说的对')) # ['', ' hello,xiao|||gui,'] print(msg.split('||')) # ['你说的对 hello,xiao', '|gui,']
rsplit 切分顺序其实是从左往右的 但是有了步长以后 就是将那一个符合的切分掉 再从左往右打印出来
所以如果不写split 和 rsplit的话效果一样的
msg = 'hello word!!!' print(msg.rsplit('!',1)) # ['hello word!!', '']
7 循环 就是用for循环取值
msg = 'hello,world!' for i in msg: print(i)
掌握的
1 stirp,lstrip,rstrip
msg = '#####james#####' print(msg.strip('#')) # james 去除左右两边的字符 可以是任意字符但是如果被包裹在没有被清除的字符中间就不会去除了 print(msg.lstrip('#')) # james##### 去除左右两边的字符 可以是任意字符但是如果被包裹在没有被清除的字符中间就不会去除了 print(msg.rstrip('#')) # #####james 去除左右两边的字符 可以是任意字符但是如果被包裹在没有被清除的字符中间就不会去除了
2 lower,upper
name = 'Kobe Bryant' print(name.lower()) # kobe bryant 全部转换成小写 print(name.upper()) # KOBE BRYANT 全部转换成大写
3 startswith,endswith
name = 'Kobe Bryant' print(name.startswith('Ko')) # True 是否以什么开头 print(name.startswith('Koc')) # False 是否以什么结尾 print(name.endswith('ant')) # True print(name.endswith('asjkd')) # False
4 format的三种用法 也是格式化输出的一种方式 python推荐使用的格式化输出
第一种 按照位置传,和%s原理一样 但是只能按位置填写,写错了就成下面的结果 !!! info = '我是{},我今年{}岁'.format('许兆龙',22) # 我是许兆龙,我今 info1 = '我是{},我今年{}岁'.format(22,'许兆龙') # 我是22,我今年许兆龙岁 print(info) print(info1)
第二种,按照索引取值 info = '我是{0},你们都是{1},{2}'.format('swb','弟弟','哈哈哈') print(info)
第三种,按照关键字位置传参 name = 'james' msg = '总冠军' info = 'my name is {name1},湖人{msg1}'.format(name1 = name,msg1 = msg) # my name is james,湖人总冠军 info1 = 'my name is {name},湖人{msg}'.format(name = 'kobe',msg = '总冠军') # my name is kobe,湖人总冠军 print(info) print(info1)
5 切分 split rsplit 上面查找 6
6 join
msg = 'james|66666|总冠军'
res_list = (msg.split('|'))
print(res_list) # ['james', '66666', '总冠军']
res = '$'.join(res_list)
print(res) # james$66666$总冠军
lis = ['1','a','b']
res1 = "=".join(lis)
print(res1) # 1=a=b
不同种类型的数据类型不能添加
lis = [1,'a','b']
res1 = "=".join(lis)
print(res1) # 报错,因为1不是字符串类型和'a','b'不一样
7 replace 更改索引位置的字符
msg = 'what do you color see see' res = msg.replace(' ','NB') res1 = msg.replace(' ','NB',1) # 只更改索引的字符 print(msg) print(res) # whatNBdoNByouNBcolorNBseeNBsee print(res1) # whatNBdo you color see see
8 isdigit 判断输入是否是纯数字
while True: num = input('输入的是不是纯数字:>>>') print(num.isdigit())