python全栈开发 * 03 基本数据类型 * 180601
python基本数据类型 ( int , bool , str )
一 python基本数据类型
(一)int ==> 整数.进行数学运算
(二)str ==> 字符串.可保留少量数据并进行相应操作
(三)bool ==> 判断真假.True,False
(四)list ==> 存储大量数据.用[ ]表示
(五)tuple==> 元组.不可以发生改变用()表示
(六)dict ==> 字典.保存键值对,一样可以保存大量数据
(七)set ==> 集合.保存大量数据.不可以重复,其实就是不保存value的dict
二 整数( int )
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型. 在python3中不存在long类型
整数可以进行的操作:
bit_length(). 计算整数在内存中占用的二进制码的长度
十进制: 1 2 3 4 5 6 7 8
二进制: 1 10 11 100 101 110 111 1000
长度bit_length(): 1 2 2 3 3 3 3 4
三 布尔值( bool )
取值只有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值转换成相应的"值"
四 字符串( str )
把字符连成串,在Python中用 ' ," ,''' , """ 引起来的内容被称为字符串.
(一 )切片和索引
1.索引. 索引就是下标. 注意 : 下标从 " 0 "开始.
# 0 1 2 3 4 5 6 7
s1 = "p y t h o n 最 牛"
print(s1[0]) # 获取第 0 个 ( 0,1,2,3,4,5,6,7 ) 都可以获取.
print(s1[8]) # 没有8,获取不了,会报错
print(s1[-1]) # -1 表示倒数
print(s1[-2]) # -2 表示倒数第二个
2.切片. 我们可以使用下标来截取部分字符串的内容
语法 : str[start:end:step] (起始, 结束,步长)
规则 : 顾头不顾尾,从start开始截取.截取到end位置,但不包括end.
# 0 1 2 3 4 5 6 78
s2 = "p y t h o n 最 牛B"
print(s2[0:3]) # 从 0 获取到 3 ,不包括3.==> pyt
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[:]) # 原样输出
跳着截取
print(s2[1:5:2]) # 从第1个开始取,取到第5个,每2个取1个,结果:yh,1:5=>ytho=>yh.
[:5:2] # 从头取到第5个,每两个取一个.
[4::2] # 从第四个取到最后,每两个取一个.
[-5::2] # 从-5取到最后,每两位取一个.
[-1:-5] # 什么都没有, (从左往右获取)
[-1:-5:-1] # 步长是-1,这时就是从右往左取值了.
[-5::-3] # 从第-5个开始,到最开始,每3个取1个,结果:oy
步长 :
如果是整数,则从左往右取,如果是负数,则从右往左取,默认是1.
(二 )字符串的相关操作方法
切记 : 字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的
1.大小写转来转去
s1.capitalize()
print(s1) # 输出发现并并没有任何变化,因为字符串本身是不会发生变化的,需要重新获取.
ret1=s1.cpapitalize() # 首字母变大
print(ret1)
ret2=s1lower() # 全部换小写
print(ret2)
ret3=s1upper() # 全部换大写
print(ret3)
应用大写:
verify_code="abDe"
user_verify_code=input("请输入验证码")
if verify_code.upper() == user_verify_code.upper():
print("验证成功")
else:
print("验证失败")
ret4=s1.swapcase() # 大小写互相换
print(ret4)
ret5=s1.casefold() # 转换成小写,与lower区别,后者对某些字符支持不够.casefold() 对所有字母都有效.
print(ret5)
s2="mary egg ,taibai*yinwang_麻花"
ret6=s2.title() # 每个被特殊字符隔开的字母首字母大写. 中文也算特殊字符.
print(ret6) # Mary Egg,Taibai*Yinwang_麻花
2.切来切去
ret7=s.center(10,"*") # 拉长成10,把原字符串放中间,其余位置补*.
print(ret7)
ret8=s.expandtabs() # 更改tab的长度,
s3="mary wusir\teggon"
print(s3.expandtabs()) # 可以改变\t的长度,默认长度更改为8
ret9=s.strip() # strip 去左右两边空格; lstrip 去左边的空格 ; rstrip 去右边的空格.print
应用用户登录. 也可去掉制定元素.("指定元素")
ret10=s.replace("i","s",2 ) # 把" i "换成 " s " , "2"代表替换两个.
lst11=s.split(" ") # 字符串切割,根据引号里的字符进行切割 ,如果切割符在左右两端,那么 一定会出现空字符串
print(lst)
3.格式化输出
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)
4.查找
s1 = "我叫sylar, 我喜欢python, java, c等编程语言."
ret1 = s1.startswith("sylar") # 判断是否以sylar开头
print(ret1)
ret3 = s1.endswith("语言") # 是否以'语言'结尾
print(ret3)
ret4 = s1.endswith("语言.") # 是否以'语言.'结尾
print(ret4)
ret7 = s1.count("a") # 查找"a"出现的次数
print(ret7)
ret5 = s1.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)
5.条件判断
s1 = "123.16"
print(s1.isalnum()) # 是否由字母和数字组成
print(s1.isalpha()) # 是否由字母组成
print(s14.isdigit()) # 是否由阿拉伯数字
print(s14.isnumeric()) # 中文都识别.(一二 三; 壹贰; 123)
print(s14.isdecimal())
# 练习. 用算法判断某一个字符串是否是小数
s17 = "-123.12"
s17 = s17.replace("-", "") # 替换掉负号
if s17.isdigit():
print("是整数")
else:
if s17.count(".") == 1 and nots17.startswith(".") and not s17.endswith("."):
print("是小数")
else:
print("不是小数)
6.计算字符串的长度
s18 = "我是你的眼, 我也是a"
ret = len(s18) # 计算字符串的长度 是内置函数不需要加 " s."
print(ret)
注意: len()是python的内置函数. 所以访问方式也不一样. 你就记着len()和print()一样就行了.
7.迭代
我们可以使用for循环来便利(获取)字符串中的每一个字符
语法:
for 变量 in 可迭代对象:
pass
可迭代对象: 可以一个一个往外取值的对象
应用
s19 = "大家好, 我是VUE, 前端的小朋友们. 你们好么?"
用while循环
index = 0
while index < len(s19):
print(s19[index]) # 利用索引切片来完成字符的查找
index = index + 1
for循环, 把s19中的每一个字符拿出来赋值给前面的c
for c in s19:
print(c)
print('VUE' in s19)
in有两种用法:
1. 在for中. 是把每一个元素获取到赋值给前面的变量.
2. 不在for中. 判断xxx是否出现在str中.
# 练习,
计算在字符串"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)