python3:基本数据类型(int,bool,str)

时间:2021-10-24 17:23:30

一. 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了。
python3:基本数据类型(int,bool,str)

三.布尔值(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中