一. 基本数据类型概况
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() 可以改变 的长度,默认长度更改为8 8 .strip() 去掉左右两端的空白,空格, , , 所有用户输入的内容都要去空白 9 .lstrip() 去掉左边空格 10 .rstrip() 去掉右边空格 11 .replace(old,new)把old 替换成new 12 .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("-", "") # 替换掉负号 if s17.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 in s: 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 = 0 for c in s20: if c.isdigit(): count = count + 1 print(count)