Python数据类型
'''
1.整型
即int类型,无论整型数字多大多小都属于int。
代码:
x = 10
print(type(x)) #
1.1整型数字之间进制关系
# 十六进制
print(0x11)
print(0x111)
# 二进制
print(0b101)
print(0B101)
# 八进制
print(0o12)
print(0o23)
# 十进制转换为二进制
print(bin(3))
# 十进制转换为十六进制
print(hex(19))
# 十进制转换为八进制
print(oct(10))
==============================
2.浮点型
在python中小数都属于浮点型(float),有两种表现形式
2.1小数点形式
f = 3.14
print(f) # 3.14
print(type(f)) #
f3 = 3.1415926123456789876543217789
print(f3) # 双精度(double float,保留17为有效数字)
print(type(f3))
2.2指数形式: aEn 或 aen
3.2E5 = 3.2×105,其中 3.2 是尾数,5 是指数。
2.7E-3 = 2.7×10-2,其中 2.7 是尾数,-3 是指数。
0.2E8 = 0.2×107,其中 0.2 是尾数,8 是指数。
f1 = 3.2E5
print(f1) # 320000.0
print(type(f1)) #
f2 = 3.2E-5
print(f2) # 3.2e-05
print(type(f2)) #
==============================
3.布尔类型
布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。在python中用 bool表示布尔类型,“真"用关键字true表示,“假"用false表示。
print(4 == 2) # False
name = "xi"
print(name == "alvin") # False
print(1 == "1") # False
3.1零值
不光表达式的结果是布尔值,任意值都有自己的布尔值,这就涉及到布尔的零值。
# 任意数据类型都一个具体值的布尔值为False,我们称为零值。该类型的其他值的布尔值皆为True。
print(bool("")) # 字符串的零值 “”
print(bool(0)) # 整型的零值 0
print(bool(False)) # 布尔类型的零值 False
==============================
4.字符串
字符串是由零个或多个字符组成的有限序列。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有字符。
在python中字符串是通过单引号''或者双引号""标识的,Python 字符串中的双引号和单引号没有任何区别!。
s1 = "hi xi"
print(s1)
s2 = ""
print(s2)
s3 = 'xi是最帅!'
print(s3)
4.1字符串的转义符
转义字符 说明
\n 换行符,将光标位置移到下一行开头。
\r 回车符,将光标位置移到本行开头。
\t 水平制表符,也即 Tab 键,一般相当于四个空格。
\a 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b 退格(Backspace),将光标位置移到前一列。
\ 反斜线
' 单引号
" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写。
4.2长字符串
s = """
s = "hi xi\\nhi,alvin"
I'm xi
这是一个python解释器路径:"D:\\nythonProject\\nenv\Scripts\python.exe"
长字符串中放置单引号或者双引号不会导致解析错误
"""
print(s)
4.3格式化输出
之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出。
name = "xi"
age = 23
print("My name is %s; My age is %d"%(name,age))
在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%s和%d说明符,它最终会被后面的name和age 变量的值所替代。中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。
print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
转换说明符 解释
%d、%i 转换为带符号的十进制整数
%o 转换为带符号的八进制整数
%x、%X 转换为带符号的十六进制整数
%e 转化为科学计数法表示的浮点数(e 小写)
%E 转化为科学计数法表示的浮点数(E 大写)
%f、%F 转化为十进制浮点数
%g 智能选择使用 %f 或 %e 格式
%G 智能选择使用 %F 或 %E 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 函数将表达式转换为字符串
%s 使用 str() 函数将表达式转换为字符串
4.4归属序列类型
字符串属于序列类型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。
s= "hello yuan"
image-20210413141108883
Python 还支持索引值是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值 -1 开始,如图 所示。
序列类型支持的操作:
# (1)索引取值
s = "hello yuan"
print(s[6])
print(s[-10])
# (2)切片取值:序列类型对象[start : end : step]
s = "hello yuan"
print(s[1:4]) # ell :取索引1到索引3(左闭又开)
print(s[:4]) # hell :start缺省,默认从0取
print(s[1:]) # ello yuan : end缺省,默认取到最后
print(s[1:-1]) # ello yua
print(s[6:9]) # yua
print(s[-4:-1]) # yua
print(s[-1:-4]) # 空
print(s[-1:-4:-1]) #nau step为1:从左向右一个一个取。为-1 ,从右向左一个取
# (3)判断存在:Python 中,可以使用 in 关键字检查某元素是否为序列的成员。
s = "hello yuan"
print("yuan" in s) # True
# (4)支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。
# 使用数字 n 乘以一个序列会生成新的序列,其内容为原来序列被重复 n 次的结果
s = "hello"+" yuan"
print(s) # hello yuan
s= "*"*10
print(s) # **********
(5)内置方法(重点)
方法 作用 示例 输出
upper 全部大写 "hello".upper() "HELLO"
lower 全部小写 "Hello".lower() "hello"
startswith() 是否以a开头 "Yuan".startswith("Yu") True
endswith() 是否以a结尾 "Yuan".endswith("a") False
isdigit() 是否全数字 '123'.isdigit() True
isalpha() 是否全字母 'yuan123'.isalpha() False
isalnum() 是否全为字母或数字 'yuan123'.isalnum() True
strip() 去两边空格 " hi yuan \n".strip() "hi yuan"
join() 将多个字符串连接在一起 "-".join(["yuan","alvin","eric"]) "yuan-alvin-eric"
split() 按某字符分割字符串,默认按空格分隔 "yuan-alvin-eric".split("-") ['yuan', 'alvin', 'eric']
find() 搜索指定字符串,没有返回-1 "hello world".index("w") 6
index() 同上,但是找不到会报错 "hello world".index("w") 6
count() 统计指定的字符串出现的次数 "hello world".count("l") 3
replace() 替换old为new 'hello world'.replace(‘world',‘python') "hello python"
format() 格式化方法
# 任意数据对象.方法()实现对数据的某种操作
# 不同数据类型对象支持不同方法
# 字符串类型对象支持哪些方法
s1 = "yuan"
s2 = "RAIN"
# (1) upper方法和lower方法
s3 = s1.upper()
s4 = s2.lower()
print(s3) # "YUAN"
print(s4) # "rain"
s5 = "hello yuan"
s6 = "hi world"
# (2) startswith和endswith:判断字符串是否以什么开头和结尾
print(s5.startswith("hello")) # True
print(s6.startswith("hello")) # False
print(s6.startswith("hi wor")) # True
print(s6.endswith("hi wor")) # False
# (3) isdigit(): 判断字符串是否是一个数字字符串
s7 = "123"
s8 = "123A"
print(s7.isdigit()) # True
print(s8.isdigit()) # False
s9 = "123SAA%#"
print(s9.isalnum()) # False 不能包含特殊符号
# (4) strip(): 去除两端空格和换行符号
s10 = " I am yuan "
print(s10)
print(s10.strip())
name = input("请输入姓名>>").strip()
print(name)
# (5) split分割方法: 将一个字符串分割成一个列表
s11 = "rain-yuan-alvin-eric"
print(s11.split("-")) # ['rain', 'yuan', 'alvin', 'eric']
# (6) join方法: 将一个列表中的字符串拼接成一个字符串
names_list = ['rain', 'yuan', 'alvin', 'eric']
s12 = "-".join(names_list) # 用什么分隔符拼接names_list列表
print(s12,type(s12)) # "rain-yuan-alvin-eric"
==============================
5.列表
列表声明
在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。
列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示:
[element1, element2, element3, ..., elementn]
不同于C,java等语言的数组,python的列表可以存放不同的,任意的数据类型对象。
l = [123,"xi",True]
print(l,type(l))
# 注意
a,b = [1,2]
print(a,b)
5.1索引求值
l = [10,11,12,13,14]
print(l[2]) # 12
print(l[-1]) # 14
5.2切片操作
l = [10,11,12,13,14]
print(l[2:5])
print(l[-3:-1])
print(l[:3])
print(l[1:])
print(l[:])
print(l[2:4])
print(l[-3:-1])
print(l[-1:-3])
print(l[-1:-3:-1])
print(l[::2])
1、取出的元素数量为:结束位置 - 开始位置;
2、取出元素不包含结束位置对应的索引,列表最后一个元素使用 list[len(slice)] 获取;
3、当缺省开始位置时,表示从连续区域开头到结束位置;
4、当缺省结束位置时,表示从开始位置到整个连续区域末尾;
5、两者同时缺省时,与列表本身等效;
6、step为正,从左向右切,为负从右向左切。
5.3判断成员是否存在
in 关键字检查某元素是否为序列的成员
l = [10,11,12,13,14]
print(20 in l) # False
print(12 in l) # True
5.4相加
l1 = [1,2,3]
l2 = [4,5,6]
print(l1+l2) # [1, 2, 3, 4, 5, 6]
5.5循环列表
for name in ["张三",'李四',"王五"]:
print(name)
for i in range(10): # range函数: range(start,end,step)
print(i)
# 基于for循环从100打印到1
for i in range(100,0,-1):
print(i)
==============================
999.类型转换
i = int("3")
print(i,type(i)) # 3
s = str(3.14)
print(s,type(s)) # 3.14
'''