第三章 数据类型

3.1 Python基本数据类型

类型 含义 描述
int 整数 主要用来进⾏数学运算
str 字符串 可以保存少量数据并进⾏相应的操作
bool 布尔值 判断真假,True,False
list 列表 存储⼤量数据,⽤[ ]表示
tuple 元组 不可以发⽣改变 用( )表示
dict 字典 保存键值对, ⼀样可以保存大量数据
set 集合 不可以重复,其实就是不保存value的dict

3.2 整数(int)

​ 在python3中所有的整数都是int类型,但在python2中如果数据量比较大,会使用long类型。

​ 在python3中不存在long类型。

整数可以进行的操作:

​ bit_length(),计算整数在内存中占用的⼆进制码的长度

十进制 二进制 长度bit_length()
1 1 1
2 10 2
3 11 2
4 100 3
5 101 3
6 110 3
7 111 3
8 1000 4

3.3 布尔值 (bool)

取值只有True,False;bool值没有操作,一般用于条件判断。

1恒为真比True的效率还要高

False可以用0, "" , [] , () , { } , None表示,因为所有空的东西都是Flase。

类型转换问题:

通过type ()查看数据类型

str => int(str)

int => str(int)

int => bool(int) 0是False 非0是True

bool=> int(bool) True是1, False是0

str => bool(str) 空字符串是False, 不空是True

bool => str(bool) 把bool值转换成相应的"值"

3.4 字符串(str)

字符:单一文字符号。

字符串:有序的字符序列。在python中用', ", ''', """引起来的内容被称为字符串。

用途:存储少量数据

3.4.1 切片和索引

1.索引

索引就是下标,标记的是字符的位置,索引的下标从0开始,它可以准确定位元素

语法:str[下标],下标超长时会报错。

例:

s1 = "python最⽜B"
print(s1[0]) # 获取第0个
print(s1[1])
print(s1[2])
print(s1[3])
print(s1[4])
print(s1[5])
print(s1[6])
print(s1[7])
print(s1[8])
print(s1[9]) # 没有9, 越界了,会报错
print(s1[-1]) # -1 表示倒数第一的元素
2.切片

​ 可以使用下标来截取部分字符串的内容

​ 语法: str[start: end]

​ 规则: 从左向右, 从start开始截取, 截取到end位置,但不包括end

s2 = "python最牛B"
print(s2[0:3]) # 从0获取到3,不包含3,结果: pyt
print(s2[6:8]) # 结果 最⽜
print(s2[6:9]) # 最大是8,但根据规则, 想要取到8必须给9
print(s2[6:10]) # 如果右边已经过了最大值,相当于获取到最后
print(s2[4:]) # 如果想获取到最后,那么最后一个值可以不给.
print(s2[-1:-5]) # 从-1获取到-5这样是获取不到任何结果的. 从-1向右数,你怎么数也数不到-5
print(s2[-5:-1]) # 能取到数据,但是顾头不顾尾,怎么取最后⼀个呢?
print(s2[-5:]) # 什么都不写就是最后了
print(s2[:-1]) # 这个是取到倒数第⼀个
print(s2[:]) # 原样输出

跳着截取

切片语法:

str[ start : end : step]

start: 起始位置

end: 结束位置,结束位置超长不会报错

step:步长,调节每步长度与方向

步⻓: 如果是正数, 则从左往右取,如果是负数,则从右往左取,默认是1

规则:当步长是正数时,从左向右, 从start开始截取. 截取到end位置,但不包括end,每隔步长截取下一个,此时数值 start<end ;当步长是负数时,从右向左, 从start开始截取,截取到end位置,但不包括end,每隔步长截取下一个,此时数值strat>end 。

print(s2[1:5:2]) # 从第一个开始取, 取到第5个,每2个取1个, 结果: yh, 分析: 1:5=>ytho => yh
print(s2[:5:2]) # 从头开始到第五个. 每两个取一个
print(s2[4::2]) # 从4开始取到最后. 每两个取一个
print(s2[-5::2]) # 从-5取到最后.每两个取一个
print(s2[-1:-5]) # -1:-5什么都没有. 因为是从左往右获取的.
print(s2[-1:-5:-1]) # 步长是-1. 这时就从右往左取值了
print(s2[-5::-3]) # 从倒数第5个开始. 到最开始. 每3个取一个, 结果oy
print(s2[ : : -1]) #倒叙输出字符串

3.4.2 字符串的相关操作方法

字符串是不可变对象,所有操作对原字符串是不会有影响的,以下的操作若想输出,需赋值在新的变量上,id()查看内存地址

1.大小写之间的切换
函数 用法
.capitalize() 整个字符串的首字母大写
.lower() 所有字符转换成小写
.upper() 所有字符转换成大写,可用在验证码等不区分大小写的情况
.swapcase() 大小写互相转换
.casefold() 所有字符转换成小写,比lower()支持的字符要多
.title() 每个被特殊字符隔开的字母首字母大写,中文也被视为特殊字符
s1 = "python最牛B"
s1.capitalize()
print(s1) # 输出发现并没有任何的变化. 因为这里的字符串本身是不会发生改变的,需要我们重新获取
ret1 = s1.capitalize()
print(ret1) # 大小写的转换
ret = s1.lower() # 全部转换成小写
print(ret)
ret = s1.upper() # 全部转换成大写
print(ret)
# 应用, 校验用户输入的验证码是否合法
verify_code = "abDe"
user_verify_code = input("请输⼊入验证码:")
if verify_code.upper() == user_verify_code.upper():
print("验证成功")
else:
print("验证失败")
ret = s1.swapcase() # 大小写互相转换
print(ret)
# 不常用
ret = s1.casefold() # 转换成小写, 和lower的区别: lower()对某些字符支持不够好.casefold()对所有字母都有效. 比如东欧的一些字母
print(ret)
s2 = "БBß" # 俄美德
print(s2)
print(s2.lower())
print(s2.casefold())
# 每个被特殊字符隔开的字母首字母大写
s3 = "alex eggon,taibai*yinwang_麻花藤"
ret = s3.title() # Alex Eggon,Taibai*Yinwang_麻花藤
print(ret)
# 中⽂文也算是特殊字符
s4 = "alex老男孩wusir" # Alex老男孩Wusir
print(s4.title())
2. 元素的切换

.center() --》 把字符串拉长并居中,还可以填充

.expandtabs() --》更改\t(tab)的长度,默认长度更改为8,一般用不到

# 居中
s5 = "周杰伦"
ret = s5.center(10, "*") # 拉长成10, 把原字符串放中间.其余位置补*
print(ret)
# 更改tab的长度
s6 = "alex wusir\teggon"
print(s6)
print(s6.expandtabs()) # 可以改变\t的长度, 默认长度更改为8
3.去空格

.strip() --》 去掉字符串中左右两端的空白,不只是空格还有tab(\t)空白,制表符\t,换行符\n

.lstrip() --》 去掉左边空格

.rstrip() --》 去掉右边空格

升级:

.strip("str") --》去掉指定元素

# 去空格
s7 = " alex wusir haha "
ret = s7.strip() # 去掉左右两端的空格
print(ret)
ret = s7.lstrip() # 去掉左边空格
print(ret)
ret = s7.rstrip() # 去掉右边空格
print(ret) # 应用, 模拟用户登录. 忽略用户输入的空格
username = input("请输入用户名:").strip()
password = input("请输入密码: ").strip()
if username == 'alex' and password == '123':
print("登录成功")
else:
print("登录失败")
s7 = "abcdefgabc"
print(s7.strip("abc")) # defg 也可以指定去掉的元素
4.字符串的替换、切割

字符串替换

replace('a', 'b') --》 把字符串里的 a 替换成 b

replace('a', 'b',2) --》把字符串里的 a 替换成 b,替换2个

# 字符串替换
s8 = "sylar_alex_taibai_wusir_eggon"
ret = s8.replace('alex', '金⻆大王') # 把alex替换成金角大王
print(s8) # sylar_alex_taibai_wusir_eggon 切记, 字符串是不可变对象,所有操作都是产生新字符串返回
print(ret) # sylar_金角大王_taibai_wusir_eggon
ret = s8.replace('i', 'SS', 2) # 把i替换成SS, 替换2个
print(ret) # sylar_alex_taSSbaSS_wusir_eggon

字符串切割

.split(" ") --》切掉所含元素,切割之后变成多个字符串,整体返回的是一个列表

注意:切割符在左右两端,那么一定会出现空字符串

小知识: \n 是换行符,在python中表示换行

s9 ="alex,wusir,sylar,taibai,eggon"
lst = s9.split(",") # 字符串切割, 根据,进行切割
print(lst)
s10 = """
盖伦
德邦
嘉文
凯特琳""" ###留坑请注意
print(s10.split("\n")) # 用\n切割
s11 = "德玛哈哈银王呵呵德玛吼吼德玛"
lst = s11.split("德玛") # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右两端,那么一定会出现空字符串,深坑请留意
print(lst) ##### 5.格式化
5.格式化输出

%s --》字符串 %d --》数字 %%--》转译成%

"{},{},{}".format() --》按照位置格式化,{}里可以是下标也可以是变量

s12 = "我叫%s, 今年%d岁了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法
print(s12)
s12 = "我叫{}, 今年{}岁了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化
print(s12)
s12 = "我叫{0}, 今年{2}岁了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置
print(s12)
s12 = "我叫{name}, 今年{age}岁了, 我喜欢{singer}".format(name="周杰伦", singer="周润发", age=28) # 指定关键字
print(s12)

f"{变量名}",3.6版本之后才出现

6.查找
函数 功能
.startswith("str") 判断是否以str开头,返回True或Flase
.endswith("str") 判断是否以str结束,返回True或Flase
.count("str") 查找str出现的次数
.find("str") 查找str出现的位置,如果找不到索引,返回-1
.index('str') 求索引位置,如果找不到索引,程序会报错
s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔言."
ret1 = s13.startswith("sylar") # 判断是否以sylar开头
print(ret1)
ret2 = s13.startswith("我叫sylar") # 判断是否以我叫sylar开头
print(ret2)
ret3 = s13.endswith("语言") # 是否以'语言'结尾
print(ret3)
ret4 = s13.endswith("语言.") # 是否以'语言.'结尾
print(ret4)
ret7 = s13.count("a") # 查找"a"出现的次数
print(ret7)
ret5 = s13.find("sylar") # 查找'sylar'出现的位置
print(ret5)
ret6 = s13.find("tory") # 查找'tory'的位置, 如果没有返回-1
print(ret6)
ret7 = s13.find("a", 8, 22) # 切片找
print(ret7)
ret8 = s13.index("sylar") # 求索引位置,如果找不到索引,程序会报错
print(ret8)
7.条件判断--is系列
函数 功能
.isalnum() 判断是不是由中文、字母和数字组成
.isalpha() 判断是不是由中文和字母组成
.isdigit() 判断是否由数字组成, 不判断小数点
.isdecimal() 判断是否由数字组成,检查十进制,不判断小数点
.isnumeric() 判断字符串是否只由数字组成,这种方法是只针对unicode对象,不判断小数点

判断是小数要自己写算法

# 条件判断
s14 = "123.16"
s15 = "abc"
s16 = "_abc!@"
# 是否由字母和数字组成
print(s14.isalnum())
print(s15.isalnum())
print(s16.isalnum())
# 是否由字母组成
print(s14.isalpha())
print(s15.isalpha())
print(s16.isalpha())
# 是否由数字组成, 不包括小数点
print(s14.isdigit())
print(s14.isdecimal())
print(s14.isnumeric()) # 这个中文都识别
print(s15.isdigit())
print(s16.isdigit())
# 练习--用算法判断某一个字符串是否是小数
s17 = "-123.12"
s17 = s17.replace("-", "") # 替换掉负号
if s17.isdigit():
print("是整数")
else:
if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
print("是小数")
else:
print("不是小数")

s.isdigit、isdecimal 和 s.isnumeric 区别

函数 True False
.isdigit() Unicode数字,byte数字(单字节),全角数字(双字节) 汉字数字,罗马数字,小数
.isdecimal() Unicode数字,,全角数字(双字节) 罗马数字,汉字数字,小数
.isnumeric() 数字,全角数字(双字节),汉字数字 小数,罗马数字
8.计算字符串的长度

len()内置函数,跟print()一个类型

len(str) :工厂函数 --除了int和bool其他类型都能用,计算长度

s18 = "我是你的眼, 我也是a"
ret = len(s18) # 计算字符串的长度
print(ret)

注意:len()是python的内置函数,所以访问方式不一样,len()与print()一样

9.迭代-for循环

我们可以利用for循环来便利(获取)字符串中的每一个字节

语法:

	for 变量  in  可迭代的对象:

​ pass #占位,过,不做任何操作,也可以用...

可迭代对象指的是可以一个一个往外取值的对象。

其中for 和 in 都是关键字

s19 = "大家好, 我是VUE, 前端的小朋友们. 你们好么?"
# 用while循环
index = 0
while index < len(s19):
print(s19[index]) # 利用索引切片来完成字符的查找
index = index + 1
# for循环, 把s19中的每一个字符拿出来赋值给前面的c
for c in s19:
print(c)
'''
in有两种用法:
1. 在for中. 是把每⼀个元素获取到并赋值给前边的变量.
2. 不在for中. 判断xxx是否出现在str中.
'''
print('VUE' in s19)

练习:计算在字符串"I am sylar, I'm 14 years old, I have 2 dogs!"中有几个数字。

s20 = "I am sylar, I'm 14 years old, I have 2 dogs!"
count = 0
for c in s20:
if c.isdigit(): #判断是不是数字
count = count + 1
print(count)

python学习之数据类型(int,bool,str)的更多相关文章

  1. 基本数据类型int,bool,str

    .基本数据类型(int,bool,str) 基本数据数据类型: int 整数 str 字符串. 一般不存放大量的数据 bool 布尔值. 用来判断. True, False list 列表.用来存放大 ...

  2. day3------基本数据类型int, bool, str,list,tuple,dict

    基本数据类型(int, bool, str,list,tuple,dict) 一.python基本数据类型 1. int  整数. 主要用来进行数学运算 2. str  字符串, 可以保存少量数据并进 ...

  3. Python的基础类型(int,bool,str):

    Python的基础类型(int,bool,str): 1.int -------> 整形:主要用力进行数字计算 2.string ------>字符串:可以保存少量数据并进行相关的操作 3 ...

  4. 第三天-基本数据类型 int bool str

    # python基础数据类型 # 1. int 整数 # 2.str 字符串.不会用字符串保存大量的数据 # 3.bool 布尔值. True, False # 4.list 列表(重点) 存放大量的 ...

  5. python基础与数据类型(int, float, str, list)

    目录 python多版本共存 在cmd窗口进入不同版本的python环境 在pycharm中切换不同的版本 python语法之注释 python变量与常量 变量 变量的本质 变量的命名规范 常量 py ...

  6. 基本数据类型(int,bool,str)

    目录: 1.int        数字类型 2.bool      布尔值 3.str    字符串类型 一.整型(int) 在python3中所有的整数都是int类型.但在python2中如果数据量 ...

  7. python中的基本数据类型(int,bool,str)及字符串操作

    一. 基本数据类型概况 1.  int 整数,主要用来进行数学运算 2.  str 字符串,可以保存少量数据并进行相应的操作 3.  bool 布尔值,判断真假,True,False 4.  list ...

  8. python基本数据类型,int,bool,str

    一丶python基本数据类型 1.int 整数,主要用来进行数学运算. 2.str 字符串,可以保存少量数据并进行相应的操作 3.bool 判断真假.True.False 4.list 存储大量数据, ...

  9. python基础知识梳理----3基本数据类型,int,bool,str ,for 循环,迭代

    一:python的基本类型 1.int  -----整数,主要进行数学运算 2.str  -----字符串,可以保存少量数据,并进行相关操作, 3. bool ---布尔类型,判断真假 4.list ...

  10. Python——字符转换(int , bool ,str)

    while True: pass while 1: pass #效果相同,后者 效果更快 s = 1 y = bool (s) #结果为True,int只要不是0,就为真 s = 'abc' y = ...

随机推荐

  1. Eclipse快捷方式早知道!Productive Workflow不再是问题

    MyEclipse CI 2019.4.0安装包下载 本文将为大家介绍Eclipse快捷方式列表,希望可以帮助您提供工作效率.快捷方式主要分以下几个区域: 导航 通用编辑 Java编辑器 插件开发 工 ...

  2. 报错:required string parameter XXX is not present

    报错:required string parameter XXX is not present 不同工具发起的get/delete请求,大多数不支持@RequestParam,只支持@PathVari ...

  3. php类知识----特别用法

    spl_autoload_register注册 <?php #spl_autoload_register-----这个例子是用来打印实例化类的类名 function thereisagameof ...

  4. BZOJ 3173: [Tjoi2013]最长上升子序列 (线段树+BIT)

    先用线段树预处理出每个数最终的位置.然后用BIT维护最长上升子序列就行了. 用线段树O(nlogn)O(nlogn)O(nlogn)预处理就直接倒着做,每次删去对应位置的数.具体看代码 CODE #i ...

  5. 四 java web考点

    一.GET和POST区别(参考Servlet&JSP学习笔记) <form>中method属性默认为GET. 1.使用POST的情况 GET跟随URL之后,请求参数长度有限,过长的 ...

  6. Linux命令(Ubuntu)

    VMware 打开命令模式快捷键:  Ctrl + Alt + T VMware 里面Ubuntu不能全屏, 本来想着习惯就好, 知道今天看一些信息不能全部显示, 最终不能忍了. 上网找了很多方法 主 ...

  7. java+Word图片上传控件

    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...

  8. HDU 5113 Black And White ( 2014 北京区预赛 B 、搜索 + 剪枝 )

    题目链接 题意 : 给出 n * m 的网格.要你用 k 种不同的颜色填给出的网格.使得相邻的格子颜色不同.若有解要输出具体的方案 分析 : 看似构造.实则搜索.手构构半天没有什么好想法 直接搜就行了 ...

  9. TTTTTTTTTTTTT CF#365 div2 B 统计点

    B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  10. ZOJ - 3715贪心

    ZOJ - 3715KindergartenElection 题目大意:幼儿园里正在举办班长选举,除1号小朋友外每个人都会投他最好的朋友,但1号小朋友可以贿赂别人(小伙子有丶想法),被贿赂的小朋友就会 ...