一. 基本数据类型概况
1. int 整数,主要用来进行数学运算
2. str 字符串,可以保存少量数据并进行相应的操作
3. bool 布尔值,判断真假,True,False
4. list 列表. 一般存放大量的数据, 用 [ ] 表示
5. tuple 元组. 只读列表, 不能发生改变,用 ( ) 表示.
6. dict 字典,保存键值对,一样可以保存大量数据 {"name":"哈哈", "age": "18"}
7. set 集合 内容不能重复, 其实就是不保存value的dict
8. bytes 一堆字节. 最小数据单元
二. int类型的相关操作.
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大,会使用long类型.在python3中不存在long类型
数字没办法进行其他相关操作,操作只有+ - * / // % ** 这类
8bit = 1 byte
bit_lenth() 来求整数在内存中占用的二进制码长度
三. bool类型的操作. 基本类型转换的问题
bool类型没有操作
类型转换
结论一: 想把xxx转换为y类型 y(xxx)
结论二: 能够表示False的数据: 0 , False,"" , [] , {} , set() , tuple() , None
四. str 认识字符串(重点, 多)
字符: 单一的文字符号,字符按照固定的顺序连成串, 被' 或者" 或者''' 或者"""括起来的内容
字符串是不可变的对象,所以任何操作对原字符串是不会有任何影响的
字符串相关的操作方法:
1.upper() 转换成大写,忽略大小写2.capitalize() 首字母转换成大写3.swapcase() 大小写互相转换4.casefold() 转换成小写, 和lower的区别: lower对某些字符支持不够好, casefold对所有字母都有效,比如东欧的一些字母5.title() 每个被特殊字符隔开的字母首字母大写6 .center(10,"*") 拉长成10, 把原字符串放中间,其余位置补 *
7.expandtabs() 可以改变\t 的长度,默认长度更改为88.strip() 去掉左右两端的空白,空格, \t, \n, 所有用户输入的内容都要去空白9.lstrip() 去掉左边空格10.rstrip() 去掉右边空格11.replace(old,new)把old 替换成new12.split()字符串切割13.startswith() 判断是否以xxx开头14.endswith() 判断是否以xxx结尾15 .find() 查找, 找不到返回-1.index() 也可查找索引 如果查找不到,结果为报错16.isdigit() 判断是否是数字组成17.len() 求长度 用法可视为和print()一样18.endswith() 判断是否以xxx结尾19.count() 查找xxx出现的次数20.isalnum() 判断是否由字母和数字组成21.isalpha() 判断是否由字母组成22.isnumeric() 判断是否由数字组成 可以识别中文23.isupper() 判断是否是大写字母24 .islower() 判断是否是小写字母
25 .join() 拼接字符串
1.切片和索引
索引,就是下标. 下标从0开始
2.切片, 我们可以使用下标来截取部分字符串的内容
s[start:end:step]
start开始的位置
end 结束
step 步长,控制方向,每xx个取一个
3.格式化输出:
s12 = "我叫%s, 今年年%d岁了了, 我喜欢%s" % ('Bob', 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.查找:
s= "我叫Tom, 我喜欢python, java, c等编程语言."ret1= s.startswith("Tom") #判断是否以Tom开头
print(ret1)
ret2= s13.startswith("我叫Tom") #判断是否以我叫Tom开头
print(ret2)
ret3= s13.endswith("语⾔") #是否以'语言'结尾
print(ret3)
ret4= s13.endswith("语⾔.") #是否以'语⾔.'结尾
print(ret4)
ret7= s13.count("a") #查找"a"出现的次数
print(ret7)
ret5= s13.find("t") #查找't'出现的位置
print(ret5)
ret6= s13.find("tory") #查找'tory'的位置, 如果没有返回-1
print(ret6)
ret7= s13.find("a", 8, 22) #切片找
print(ret7)
ret8= s13.index("t") #求索引位置. 注意. 如果找不到索引. 程序会报错
print(ret8)
5.条件判断:
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("-", "") #替换掉负号
ifs17.isdigit():print("是整数")else:if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):print("是小数")else:print("不是⼩数")
6 .join() 拼接
li = ["a", "b", "c", "d"]
s= "_".join(li)print(s) #a_b_c_d
li= "abcdef"s= "_".join(li)print(s) #a_b_c_d_e_f
五.for循环遍历字符串
for 变量 in可迭代对象
循环体
举例:
s= "12345"
for c ins:print(c)
用while的话可以这么写
s = "12345"index = 0
while index < len(s):
print(s[index])
index += 1
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=0for c ins20:ifc.isdigit():
count= count + 1
print(count)