一. python基本数据类型
-
int 整数,用来进行数学运算
-
str 字符串,存放少量数据
-
bool 布尔值,用来判断True,False
-
list 列表,存放大量数据,[ ]表示
-
tuple 元组,只读列表,( ) 表示
-
dict 字典,存放大量数据,{key:value}表示
-
set 集合,存放大量数据,不重复
二.整数(int)
所有整数都是int类型。
bit_length()
返回一个数的二进制长度。(了解)
a = 2
print(a.bit_length()) 结果: 2 a = 5
print(a.bit_length()) 结果: 3
说明:十进制转二进制
将正的十进制数除以二,得到的商再除以二,依次类推直到商为零或1时为止,然后在旁边标各步的余数,最后倒着写出来,高位补零就OK了。
三.布尔值(bool)
取值只有True、False。bool值没有操作
1.所有的空都是False,所有的非空都是True。
a = 0 # 整数0,False print(bool(a)) s = "" # 空字符串,False print(bool(s)) lst = [] # 空列表,False print(bool(lst)) dic = {} # 空字典,False print(bool(dic)) a = None # None表示空,真空,False print(bool(a))
2.类型转换
把xx类型转换成yy类型,yy(xx)
str => int # 字符串转整数
int(s)
int => str # 整数转字符串
str(i)
list => tuple # 列表转字典
tuple(lst)
tuple => list # 字典转列表
list(tu)
四.字符串(str)
在python中,用', ", ''', """ 引起来的内容被称为字符串。
1.切边和索引
索引
下标,切记,下标从0开始
s = "伊丽莎白儿时" print(s[0]) print(s[1]) print(s[2]) print(s[3]) print(s[4]) print(s[5]) # print(s[6]) # 没有6,报错了,索引不能超过边界 print(s[-1]) # 倒数第一个 print(s[-2])
切片
格式:[起始位置:结束位置] 或 [起始位置:结束位置:步长]
特点:1.顾头不顾尾。2.默认从左往右切。
s = "伊丽莎白儿时" print(s[1:3]) # 从1切到3,但是取不到3 print(s[1:100]) # 从1切到100,如果右边已经过了最大值,相当于获取到最后 print(s[1:]) # 从1开始切,切到结尾 print(s[:2]) # 从头开始切,切到2 print(s[:]) # 从头到尾 print(s[-1:-3]) # 安装默认规则,从-1往右切,是怎样都不会切到-3的,方法在下面。 print(s[-3:-1]) # 只能从左到右切 # 给出第三个参数来控制方向,第三个参数叫步长 s = "伊丽莎白儿时" print(s[-1:-3:-1]) # - 表示反方向,从右往左切。 print(s[1:5:3]) # 从左到右,从1到5,但不包含5,每3个取1个。 print(s[-1:-5:-2]) # 从右到左,从-1到-5,但不包含-5,每2个取1个。
2.字符串的相关操作
字符串是不可变的对象,所有任何操作对源字符串是不会有任何影响的。
2.1.大小写转换
capitalize()
把首字母变成大写
lower()
把字母变成小写
upper()
把字母变成大写。(重要,标红的都是必记的)
swapcase()
大小写互换
casefold()
把字母变成小写。
和lower的区别:
--lower()对某些字符支持不够好。
--casefold()对所有字母都有效,比如东欧一些字母。
title()
把每个单词的开头大写。
s = "alex is a teacher And wusir is a teacher too" s1 = s.capitalize() # 只把alex首字母大写,并且测试时发现,把And变成小写的了。 print(s1) s2 = s.lower() # 全部变小写 print(s2) s3 = s.upper() # 全部变大写 print(s3) s4 = s.swapcase() # 大小写转换,大写变小写,小写变大写 print(s4) s2 = "БBß" # 俄美德 print(s2) print(s2.lower()) # 德文的B,不会转换 print(s2.casefold()) # 全都可以转换成小写 s = "alex_is a teacher And wu吴sir is a teacher too" s5 = s.title() # 只要不是全是字母连接的开头都会大写,alex_is中a和i都大写,wu吴sir中w和s都大写 print(s5)
2.2.切来切去
center()
居中
expandtabs()
更改tab的长度
strip()
去掉空白(空格和换行符)
replace()
字符串替换
split()
字符串切割
切完的结果是一个列表,列表中装的是字符串,用什么切就会损失掉什么
s = "sp" s1 = s.center(10) # 拉长成10,把原字符串放中间,其余位置补空白 print(s1) s1 = s.center(10, "*") # 拉长成10,把原字符串放中间,其余位置补* print(s1) s = " alex is a teacher " s1 = s.strip() # 去掉左右两侧的空格,中间的空格不会影响 print(s1) s2 = s.lstrip() # 去掉左边的空格,left print(s2) s3 = s.rstrip() # 去掉右边的空格,right print(s3) s = "sp alex sp" s1 = s.strip("sp") # 去掉左右两边的sp,空格不会去 print(s1) s2 = s.lstrip("sp") # 去掉左边的sp,空格不会去 print(s2) s3 = s.rstrip("sp") # 去掉右边的sp print(s3) s = "alex_wusir_taibai_ritian" s1 = s.replace("_", "A") # 将_,全部替换为大写A print(s1) s2 = s.replace("_", "") # 将_,全部替换为空(不是空格) print(s2) s3 = s.replace("_", "A", 2) # 将_,替换为A,从左到右替换2个 print(s3) s = "alex_wusir_taibai_ritian" lst = s.split("taibai") # 用taibai切,那生成的列表中,就会去掉taibai print(lst) s = """我是谁 你是谁""" lst = s.split("\n") # 去掉换行符(\n) print(lst)
2.3.格式化输出
format()
# 输出的结果是一样的 s = "我叫%s, 我今年%s岁了" % ("周杰伦", "40") print(s) s = "我叫{}, 我今年{}岁了".format("周杰伦", "40") # 按位置格式化 print(s) s = "我叫{0}, 我今年{1}岁了".format("周杰伦", "40") # 指定位置 print(s) s = "我叫{1}, 我今年{0}岁了".format("40", "周杰伦") print(s) s = "我叫{name}, 我今年{age}岁了".format(name="周杰伦", age=40) # 指定关键字 print(s)
2.4.查找
startswith()
以...开头
endswith()
以...结尾
count()
统计xx在字符串中出现的次数
find()
查找xx在字符串中出现的位置, 只找第一次出现的位置, 没有就返回-1
index()
查找xx在字符串中出现的位置, 只找第一次出现的位置, 当字符串不存在的时候, 报错
s = "Tom is a cat" print(s.startswith("Tom")) # 是否以Tom开头, 注意区分大小写 print(s.endswith("cat")) # 是否以cat结尾 print(s.count("a")) # 统计a出现的次数 print(s.find("a")) # 返回 7 print(s.find("A")) # 返回 -1 print(s.find("a", 8, 12)) # 切片找, 返回10 print(s.index("a")) # 返回 7 # print(s.index("A")) # 会报错
2.5.条件判断
isdigit()
是否由数字组成
isalpha()
是否由字母组成
isalnum()
是否由数字和字母组成
isnumeric()
是否有数字组成, 可识别中文
isupper()
判断字符串中包含的字母是否全为大写
islower()
判断字符串中包含的字母是否全为小写
# 只列举正确(True)的判断 s1 = "123" print(s1.isdigit()) # 数字 s2 = "abc" print(s2.isalpha()) # 字母 s3 = "123abc" print(s1.isalnum()) # 数字 print(s2.isalnum()) # 字母 print(s3.isalnum()) # 数字和字母 s = "壹仟贰佰五十六萬拾" print(s.isnumeric()) s1 = "AND" s2 = "AND123!@" print(s1.isupper()) print(s2.isupper()) s3 = "and" s4 = "and123!@" print(s3.islower()) print(s4.islower())
2.6.计算字符串的长度
len()
python内置函数,通用的
s = "abcd" print(len(s))
3.for循环
for 变量 in 可迭代对象:
循环体
else:
当循环结束的时候会执行
解释:
可迭代对象: 可以一个一个往外取值的对象.
s = "我是谁" # 使用while循环 n = 0 while n < len(s): print(s[n]) n = n + 1 # 迭代 # 使用for循环 for c in s: print(c)
in的小结:
in的两种用法
-
在for中, 是把每一个元素获取到赋值给前面的变量.
-
不在for中, 判断xxx是否出现在str中