1.前言
在 Python 中的变量是不需要声明,但变量在使用前需要被赋值,只有赋值以后变量才是被创建的数据。变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。
等号(=)就是给变量赋值。
等号(=)左边是变量名称,等号(=)右边是存储在变量中的值。
2.变量的基本数据类型:
变量的常见基本数据类型:
Number | 数字型 |
String | 字符串 |
List | 列表 |
Tuple | 元组 |
Set | 集合 |
Dictionary | 字典 |
2.1 数字型(int):int、float、complex、bool
1.int 整数型是完整的数字,可以是正、负数,但不能为小数,整数型长度不限。
a = 8
b = -37
print(type(a))
print(type(b))
#---<class 'int'>
#---<class 'int'>
2.float 浮点数是包含小数的正数或负数。计算机对浮点数的表达本身不够精确。保存在计算机里的二进制数,二进制数对一些数字不能准确表达,只能非常接近这个数。
a = 2.3456
b = 5.538
c = a + b
print(c)
#----7.8836
#----num1 = float('inf') # inf 无穷大
#----num2 = float('-inf') # -inf 无穷小
#----num3 = float('NaN') # NaN 不是数字
3.复数complex
实部 + 虚部 = 复数 虚部用j或J 用于科学计算(2 + 3j)
a = 1+4j
b = 5j
c = -6j
print(type(a))
print(type(b))
print(type(c))
4.布尔bool:特殊的整数,只有两个值 True False
0 :false 1:true
and 逻辑与 全真则真,一假则假
or 逻辑或 一真则真,全假则假
not 逻辑非 非真则假,非假则真
a and b: 当前边表达式为假,后边表达式不再执行,直接返回假
a or b: 当前边表达式为真,后边表达式不再执行,直接返回真
2.2 字符串
在 python 中的字符串是由单引号或双引号表示的,且定义后不能被修改。
q = "welcome"
print(q)
e = [2, 3.45, "word"]
print(e)
拓展:转义字符: \
制表符 \t
|
相当于tab
|
换行符 \n
| 换行 |
回车符 \r
|
光标移动到当前这一行的开头
|
斜线 \\
|
把斜线转义,使其成为一个普通字符
|
a1 = "word"
print(a1)
print(type(a1))
a2 = "excel " + a1
print(a2)
a3 = "i'm\"king\"" # ---引号打印
print(a3)
s1 = "word\nexcel" # ---换行
print(s1)
s2 = "word\texcel" # ---制表位
print(s2)
s3 = "word\rexcel"
s4 = "word\rex"
print(s3) # ---excel
print(s4) # ---ex 后面的字符会把前面的字符覆盖掉
s5 = "word\\excel" # ----把斜线转义,使其成为一个普通字符
print(s5)
2.2.1 字符串访问
2.2.1.1 下标访问
下标就是编号,从左向右访问,从0开始;从右向左访问,从-1开始
d1 = "word\\excel\\ppt"
# 下标访问从第一个数开始,0123456789---
print(d1)
print(d1[0])
print(d1[4])
print(d1[-5])
print(d1[-1])
#----word\excel\ppt
#----w
#----\
#----l
#----t
2.2.1.2 切片访问
切片访问和下标访问类似:
下标访问每次只能访问单个字符
切片访问每次可以访问多个字符
格式:变量名[起始值:终止值:步长]
访问时,
1.如果没有设置起始值,默认起始值为开头位置;
2.如果没有设置终止值,默认到字符串结束,如果设置了终止值,到终止位置结束,不包括结尾位置;
3.如果没有设置步长,步长默认为1
d2 = "word excel ppt"
print(d2)
print(d2[::])
print(d2[2:9:2]) # ----步长按顺序,空格也算,
# 步长数相当于从初始值的数值位加上步长数值到达的数位,显示当前数位值
print(d2[2:9:1]) # ----步长按顺序,空格也算
print(d2[-2:-15:-2]) # ----步长按顺序,空格也算
2.2.2 字符串的比较
字符串比较是逐个字符比较,从字符串第一个字符开始,如果Unicode编码值相同,会继续往下比,直到找到不同的字符分出大小,或者一直比到所有字符比较结束。
# 'A' 65
# 'a' 97
f1 = "Aaaa"
f2 = "aAAA"
print(f1 < f2)
2.2.3 字符串的加法和乘法
字符串加号(+)可以把两个字符串拼接到一起,返回一个拼接好的字符串
字符串乘号(*)乘以整数n,表示把某个字符串复制n次,返回复制n次的字符串
f3 = "abc"
f4 = 3
print(f3 + f4)
print(f3 * f4)
2.2.4 字符串相关函数
2.2.4.1 查询函数
find
|
检测字符串是否包含某字符,如果是则返回首次出现的下标,否则返回-1 从左向右
|
index
|
检测字符串是否包含某字符,如果是则返回首次出现的下标,否则报错 从左向右
|
rfind
|
从右向左
|
rindex
|
从右向左
|
d2 = "word excel ppt"
# print(d2)
# print(d2.find('w')) # ----0 数字下标从 0 开始,w在位置 0 处
# print(d2.find('p')) # ----11 l在位置 11 处,识别到符合的就会停止
# print(d2.find('a')) # -----1 不包含 a 字符
#
# print(d2.index('d')) # ----3
# # print(d2.index('a')) # 报错
print(d2.rfind('p')) # ----12 从右向左检测,数字从左到右排序
print(d2.rindex('e')) # ----8从右向左检测,数字从左到右排序
2.2.4.2 转换函数
upper
|
转大写(全部)
|
lower
|
转小写(全部)
|
title
|
每个字符串的(字符串是字母组成)首字母大写
|
d2 = "word excel ppt"
print(d2.upper()) # ----WORD EXCEL PPT
d3 = "WORD EXCEL PPT"
print(d3.lower()) # ----word excel ppt
print(d2.title()) # ----Word Excel Ppt
2.2.4.3 判断函数
startswith
|
判断字符串是否以object(某个字符)开头,True False
|
endswith
| 判断字符串是否以object(某个字符)结尾,True False |
isspace
|
判断字符串是否由空格组成 True False
|
isalnum
|
判断字符串是否由字母或数字组成 True False
|
isdigit
|
判断字符串是否是纯数字 True False
|
isalpha
|
判断字符串是否是纯字母 True False
|
d2 = "word excel ppt"
print(d2.startswith('wo'))
print(d2.endswith('pt'))
d3 = " a "
print(d3.isspace()) # 纯空格为True
d4 = "abc245u784qwe"
print(d4.isalnum())
d5 = "12345"
print(d5.isdigit())
d6 = "qwerty"
print(d6.isalpha())
2.2.4.4 分割函数
partition
|
把字符串以str分割成三部分,从左向右
|
rpartition
|
把字符串以str分割成三部分,从右向左
|
split
|
自定义分割
|
splitlines
|
按行分割
|
# partition 按照str的定义字符分为三个,只能是三个
g1 = "word excel ppt"
print(g1.partition('l')) # ----('word excel', 'l', ' ppt')
print(g1.partition('t')) # ----('word excel pp', 't', '')
print(g1.partition('a')) # ----('word excel ppt', '', '') 没有该字符
print(g1.partition(' ')) # ----('word', ' ', 'excel ppt')
# split按str分割,可自定义分割次数
# 不指定分割次数,会分割所有检测到的位置
g2 = "word excel ppt CAD PS"
print(g2.split(' ')) # 按空格分割 ['word', 'excel', 'ppt', 'CAD', 'PS']
print(g2.split('l', 2)) # 按空格分割,分割数为2 ['word exce', ' ppt CAD PS']
print(g2.split('e', 2)) # ['word ', 'xc', 'l ppt CAD PS']
# 以 e 左右分开
g3 = "word\nexcel\nppt"
print(g3)
# ----hello
# ----world
print(g3.splitlines()) # ----['hello', 'world']
2.2.4.5 其他函数
len
|
计算字符串长度
|
count
|
统计子字符串出现的次数
|
join
|
把序列中的元素连接成新的字符串
|
replace
|
把字符串中所有的str1替换成str2,也可指定替换次数
|
capitalize
|
字符串首字母大写
|
g2 = "qwerty"
print(len(g2)) # 6
for i in g2:
print(i, end="-") # q-w-e-r-t-y-q
print() # 让后面打印数据换行
g3 = "qwerty"
for s in range(len(g3)): # 相当于把g3字符串先算出数值,按照数值进行遍历
# range(6):生成一个整数序列 [0, 1, 2, 3, 4, 5]
print(g3[s], end="\t")
# g3[0] = 'q' → 打印 "q\t"
# g3[1] = 'w' → 打印 "w\t"
# g3[2] = 'e' → 打印 "e\t"
# g3[3] = 'r' → 打印 "r\t"
# g3[4] = 't' → 打印 "t\t"
# g3[5] = 'y' → 打印 "y\t"
# 所以整体打印q w e r t y
print() # 让后面打印数据换行
g4 = "word excel ppt"
print(g4.count("w"))
g5 = ["abc", "ss"]
g6 = "in"
print(g6.join(g5))
g6 = "word excel ppt"
print(g6.replace("e", "p")) # ---在无次数说明的情况下默认替换所有符合字符(e换成p)
print(g6.replace("e", "p", 1)) # ---后面加上1,代表只更换一个或n个,但只能限制次数,无法进行某个位置的替换
h1 = "asdfg"
print("h1:", len(h1))
h2 = "12345"
print("h2:", len(h2))
习题:
不使用题中的函数,来达到使用函数相同的目的
1实现 len
# 1.len
q = input("请输入多个数字或字母")
w = 0
for i in q:
w += 1
print("输入的数值长度为:", w)
#----请输入多个数字或字母qwert
#----输入的数值长度为: 5
2.find 查询单个字符或字符串
# 2.find 查询单个字符或字符串
e = input("请输入多个数字或字母")
t = input("请输入要查询的字符串")
u = 0 # 假设不可以查到字符串
for y in range(len(e)): # 相当于把字符串先算出数值,按照数值进行遍历
if t == e[y:y + len(t)]:
u = 1 # 查到了字符串
print("查询到字符串在整体字符的", y, "位")
if u == 0:
print("整体字符串中无要查询的字符")
#----请输入多个数字或字母qwert123
#----请输入要查询的字符串t
#----查询到字符串在整体字符的 4 位
3.startswith 判断单个字符或字符串
# 3.startswith 判断单个字符或字符串
i = input("请输入字符串")
o = input("输入要判断的字符")
if o == i[0:0 + len(o)]:
print(1)
else:
print(0)
#----请输入字符串qwertt
#----输入要判断的字符q
#----1
4.count 计算单个字符或字符串
# 4.count 计算单个字符或字符串
p = input("请输入字符串")
a = input("输入要计算的字符")
d = 0
for s in range(len(p)):
if a == p[s:s + len(a)]:
d += 1
if d != 0:
print("字符", a, "共有字符:", d, "个")
else:
print("无计算字符")
#----请输入字符串qwerterw
#----输入要计算的字符w
#----字符 w 共有字符: 2 个