python学习(整数,布尔值,字符串,for循环)
1.整数
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.但是在python3中不存在long类型.
整数可进行的操作 :
bit_length(). 计算整数在内存中占用的二进制码的长度.
2.再谈布尔值
取值只有True,False(bool值没有操作)
转换问题:
- str => int int(str)
- int => str str(int)
- int => bool bool(int). 0是False 非0是True
- bool=>int int(bool) True是1, False是0
- str => bool bool(str) 空字符串是False,不空是True
- bool => str str(bool) 把bool值转换成相应的"值"
3.字符串
字符串用于存储数据,但存储数据量比较少,在python中用 ' (单引号) "(双引号) '''(单引号三三引) """(双引号三引)引起来的内容被称为字符串.
字符串与索引的关系及其操作如下 :
-
索引(下标)
索引就是下标,下标从0开始,取值时索引所选长度不可以超过其本身.
s1 = "python学习" 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表示倒数第一个 print(s1[-2]) # 倒数第二个
-
切片
语法 : str[start:end]
规则 : 顾头不顾腚,从start开始截取,截取到end位置,但不包括end,切片长度可以超出范围.
用法 : 我们可以使用下标来截取部分字符串的内容
s2 = "python好学习" 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 : 步长
步长用法 : 如果是整数,则从左往右取,如果是负数,则从右往左取,step默认是1取值方向从左往右.
s2 = "python好学习" print(s2[1:5:2]) # 从索引为1的位置开始取,取到索引为4的位置,每2个取1个,结果:yh print(s2[:5:2]) # 从索引为0的位置开始到索引为4的位置,每两个取一个 print(s2[4::2]) # 从索引为4的位置开始取到最后,每两个取一个 print(s2[-5::2]) # 从索引为-5的位置取到最后.每两个取一个 print(s2[-1:-5]) # 从索引为-1的位置取到索引为-4的位置,但是什么都没有,因为取的方向是从左往右 print(s2[-1:-5:-1]) # 从索引为-1的位置取到索引为-4的位置,步长是-1,取的方向这时就从右往左. print(s2[-5::-3]) # 从索引为-5的位置开始取到最开始,每三个取一个,结果:oy
-
字符串常用方法
注意 : 切记,字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响.
-
大小写互相转换,常应用于校验用户输入的验证码是否合法
# 首字母大写 s1.capitalize() print(s1) # 输出发现并没有任何的变化,因为这里的字符串本身是不会发生改变的,需要我们重新赋值后用. ret1 = s1.capitalize() print(ret1) --------------------------------- # 全部转换成小写 ret = s1.lower() print(ret) --------------------------------- # 全部转换成大写 ret = s1.upper() print(ret) --------------------------------- # 大小写互相转换 ret = s1.swapcase() print(ret) --------------------------------- ret = s1.casefold() # 用于转换成小写,此方法不常用,和lower的区别:lower()对某些字符支持不够好. casefold()对所有字母都有效,比如东欧的一些字母 print(ret) s2 = "БBß" # 俄美德 print(s2) print(s2.lower()) # 打印结果比对可以看到lower无法对德语转化 print(s2.casefold()) --------------------------------- # 每个被特殊字符隔开的字母首字母大写 s = "eggon,taibai*yinwang" ret = s.title() print(ret)# 打印结果 Eggon,Taibai*Yinwang s = "你好chen你好shuo我是" # 你好Chen你好Shuo我是 中问也算是特殊字符 print(s4.title())
-
字符串的切割
# 居中 s = "周杰伦" ret = s.center(10, "*") # 拉长成10,把原字符串放中间,其余位置补* print(ret) --------------------------------- # 更改tab的长度 s = "alir\teon" print(s) print(s.expandtabs()) # 可以改变\t的长度, 默认长度更改为8 --------------------------------- # 去空格,常用于当用户登录时,忽略用户输入的空格 s = " chen shuo nihao " ret = s.strip() # 去掉左右两端的空格 print(ret) ret = s.lstrip() # 去掉左边空格 print(ret) ret = s.rstrip() # 去掉右边空格 print(ret) --------------------------------- # 字符串替换 s = "chen_shuo_nihao" ret = s.replace('chen', 'hehe') # 把chen替换成hehe print(s) # 注意,字符串是不可变对象. 所有操作用返回值 print(ret) # hehe_shuo_nihao ret = s.replace('n', 'yy', 2) # 把c替换成yy, 替换2个 print(ret) # 打印结果 cheyy_shuo_yyihao --------------------------------- # 字符串切割 s = "chen,shuo,ni,hao" lst = s.split(",") # 字符串切割,根据","进行切割 print(lst) # 打印结果是列表形式 ["chen","shuo","ni","hao"] #如果切割符在左右两端,那么一定会出现空字符串,深坑请留意.
-
字符串的查找
s = "我叫sylar,我喜欢python,java,c等编程语言." ret1 = s.startswith("sylar") # 判断是否以sylar开头 print(ret1) ret2 = s.startswith("我叫sylar") # 判断是否以我叫sylar开头 print(ret2) --------------------------------- ret3 = s.endswith("语言") # 是否以'语言'结尾 print(ret3) ret4 = s.endswith("语言.") # 是否以'语言.'结尾 print(ret4) --------------------------------- ret7 = s.count("a") # 查找"a"出现的次数 print(ret7) --------------------------------- ret5 = s.find("sylar") # 查找'sylar'出现的位置 print(ret5) ret6 = s.find("tory") # 查找'tory'的位置,如果没有返回-1 print(ret6) ret7 = s.find("a", 8, 22) # 切片找 print(ret7) --------------------------------- ret8 = s.index("sylar") # 求索引位置,注意,如果找不到索引,程序会报错 print(ret8)
-
is 系列
ret=1234 ret.isdecimal # 判断是不是十进制 ret.isalnum # 判断是不是中文,字母,数字 ret.isalpha # 判断是不是中文,字母 ret.isdigit # 判断是否由纯数字组成
-
计算字符串的长度
s = "你好我是***" ret = len(s) # 计算字符串的长度度 print(ret) # 打印结果为7 # len()是python的内置函数
-
4.for循环
-
for循环用法 : 我们可以使用for循环来便利(获取)字符串中的每一个字符.
-
for语法:
for 变量 in 可迭代对象:
pass
可迭代对象: 可以一个一个往外取值的对象 -
in的用法:
-
在for中. 是把每一个元素获取到赋值给前面的变量.
-
不在for中. 判断xxx是否出现在str中.
# for循环, 把s中的每一个字符拿出来赋值给前面的c s="大家好,我是python学习者" for c in s: print(c) # 注意缩进字符 print(c) # 此时打印结果为for循环最后一次c的取值 # in在python中的用法 print('pyt' in s) # 此时打印出的结果是Ture
-
5.range范围
语法 : range(start,end,step)
- start : 起始位置
- end : 结束位置
- step : 步长
注意 : 顾头不顾尾,当range(10)为此形式时,起始位置默认从0开始到9结束,打印10次