跳转至

Python编程基础

Page1:函数输入与输出

输出函数

print('输出单个字符串')

输出单个字符串

print('输出','多个信息','用,隔开')

输出 多个信息 用,隔开

print('设置','多个信息','的连接符',sep='o')

设置o多个信息o的连接符

输入函数

input() #直接调用函数就可以输入

a 'a'

input('也可以输入提示信息,提示信息不被录入') 

也可以输入提示信息,提示信息不被录入你好 '你好'

格式化输出

print('%f' % 1.11163)  # 默认保留6位小数

1.111630

print('%.1f' % 1.8)  # 取1位小数
1
1.8
print('%.3e' % 1.1167)  # 取3位小数,用科学计数法
1
1.117e+00
print('%.7g' % 9999.5465)  # 取7位有效数字 可以看到按照四舍五入来的
1
9999.547

{} 和 format的格式控制

print('我叫{},今年{}岁。'.format('陈昱杰', 19))
# 省略字段名传递位置参数

我叫陈昱杰,今年19岁。

print('身高{0},家住{1}。'.format(180, '十堰'))
# 通过数字形式的简单字段名传递位置参数

身高180,家住十堰。

print('我姐姐已经{work},今年{age}岁。'.format(work = "毕业了", age = '22'))
# 使用变量名形式的简单字段名传递关键字参数

我姐姐已经毕业了,今年22岁。

Page12:字符串

字符串的基本操作

' ' 或者 ""

如果是多行的就用''''''

1
2
3
4
str1='字符串的创建'
str2="另一种方法"
str3='''换行字符串
的创建'''
print(str1,str2,str3,sep='\n************\n')

字符串的创建 ** 另一种创建方法 **** 换行字符串 的创建

1
2
3
4
5
6
7
8
print(str1+str2)
# 合并字符串 +
print(str1 * 2 )
# 复制字符串 * 
print(str1.replace('创建','构建'))
# 修改字符串 replace('a', 'b') 用 a 来replace b
print(str1.find('创建'))
# 查找特定字符 可以看到以第一个位置为准

字符串的创建另一种方法 字符串的创建字符串的创建 字符串的构建 4

字符串切片

str1[2]
# 切取单个元素 注意从0开始的
1
'串'
1
2
3
#切取完整对象 实际是利用缺省来切取的
print(str1[:]) #从左往右
print(str1[::])   #从左往右

k > 0

k < 0

print(str1[::-1])#从右往左
1
2
3
字符串的创建
字符串的创建
建创的串符字
1
2
3
4
5
## start_index和end_index全为正(+)索引的情况 
#str1='字符串的创建'
#str2="另一种方法"
#str3='''换行字符串
#的创建'''

左闭右开

1
2
3
4
5
6
7
print(str1[2:4]) #step=1,从左往右取值,start_index=2到end_index=4同样表示从左往右取值。
print(str1[:4])  #step=1,表示从左往右取值,而start_index省略时,表示从端点开始
       #因此这里的端点是“起点”,即从“起点”值0开始一直取到end_index=4(该点不包括)。
print(str1[:4:-1])#step=-1,从右往左取值,而start_index省略时,表示从端点开始
        #因此这里的端点是“终点”,即从“终点”值9开始一直取到end_index=4(该点不包括)。
print(str1[4:])   #step=1,从左往右取值,从start_index=4开始,一直取到“终点”值4。
print(str1[6::-1]) #step=-1,从右往左取值,从start_index=4开始,一直取到“起点”0。
1
2
3
4
5
串的
字符串的
建
创建
建创的串符字
## start_index和end_index全为负(-)索引的情况 
1
2
3
#str1 = "  字  符  串    的  创  建"
#          0   1  2     3   4   5
#         -6  -5  -4   -3  -2  -1
1
2
3
4
5
6
7
print(str1[-1:-6:-1])  #step=-1,从右往左取值,start_index=-1到end_index=-6同样是从右往左取值。
print(str1[-6:-1])  #step=1,从左往右取值,而start_index=-6到end_index=-1同样是从左往右取值。
print(str1[:-4]) #step=1,从左往右取值,从“起点”开始一直取到end_index=-4(该点不包括)。
print(str1[:-6:-1]) #step=-1,从右往左取值,从“终点”开始一直取到end_index=-6(该点不包括)。
print(str1[-4:]) # step=1,从左往右取值,从start_index=-4开始,一直取到“终点”。
print(str1[-4::-1]) #step=-1,从右往左取值,从start_index=-4开始,一直取到“起点”。 
print(str1[-4:-2:-1]) #这样就会为空 不输出
1
2
3
4
5
6
建创的串符
字符串的创
字符
建创的串符
串的创建
串符字

Page13:字符串的相关函数使用

S='  aa!bb!cc!dd!EE  '
#创建一个字符串
S.split('!')
#使用!分割字符串 split
1
['  aa', 'bb', 'cc', 'dd', 'EE  ']
S.strip()
#删除字符串的空格 strip()
1
'aa!bb!cc!dd!EE'
1
2
3
4
print(S.isalnum())
#字符串含有**数字和字母**以外的字符,判断为False isalnum
print('aabbccddEE'.isalnum())
#字符串只有数字和字母,判断为True isalnum
1
2
False
True
S.count('!')
#统计字符串中!字符的个数
1
4
S.count('!',2,6)
#统计索引在2:6的字符串中!出现的次数 即限定区间左闭右开
1
1
S.lstrip()
#去掉字符串的左边空格 left
1
'aa!bb!cc!dd!EE  '
S.rstrip()
#去掉字符串的右边空格 right
1
'  aa!bb!cc!dd!EE'
S.upper()
#将小写字母完全变成大写字母
1
'  AA!BB!CC!DD!EE  '
S.lower()
#将大写字母完全变成小写字母
1
'  aa!bb!cc!dd!ee  '
1
2
3
S.capitalize()
#开始是空格的话,此函数不起作用 
#此函数的作用是将字符串的第一个字母变成大写,其他字母变小写
S.lstrip().capitalize()
#把字符串的第左边一个字母变成大写 
1
'Aa!bb!cc!dd!ee  '
S.title()
#把所有单词的第一个字母变成大写 注意是单词 再次用!分割的
1
'  Aa!Bb!Cc!Dd!Ee  '

Page14:转义字符的使用

1
2
3
4
5
print('转义字符示例:\n换行')
print('转义字符示例:\r回车')
print('转义字符示例:\r','水平制表')
print('转义字符示例:\v垂直制表')
print('转义字符示例:\0空字符')
1
2
3
4
5
6
转义字符示例:
换行
回车
 水平制表
转义字符示例:垂直制表
转义字符示例:空字符
# \n 换行 \r 回车 
# 水平制表 就相当于空8格 用来制表对其 下面是一个实例
print("\t\v\t\v\t\t\v校")
print("\t陈昱杰\t统计2班\t\t武汉科技大学") 
1
2
 姓名 班级  学校
 陈昱杰 统计2班  武汉科技大学
# 垂直制表 感觉很不常用
print('416 \v asfa')
1
416  asfa

Page15:列表

1
2
3
List = list('这里是一个列表123') # , 用来分隔
List
#创建一个列表
1
['这', '里', '是', '一', '个', '列', '表', '1', '2', '3']
1
2
3
List.insert(3,'%')
List
#对列表添加元素
1
['这', '里', '是', '%', '一', '个', '列', '表', '1', '2', '3']
1
2
3
print(List.pop())   #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 pop()
List.pop(3)    #输入索引移除索引位置上的值即%
List
1
2
3
4
5
6
7
3





['这', '里', '是', '一', '个', '列', '表', '1', '2']
1
2
3
List[4]='new' #有点像数组
List
#将列表索引为4的元素修改成'New'
1
['这', '里', '是', '一', 'new', '列', '表', '1', '2']
List.index('表')
#查找元素'表'的位置并返回索引 index
1
6
'这' in List
#判断元素是否存在与列表
1
True
'我是陈昱杰' in List
1
False
List+list('新列表')
#合并列表 + 
1
['这', '里', '是', '一', 'new', '列', '表', '1', '2', '新', '列', '表']
List*3
#重复列表 竖着来
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
['这',
 '里',
 '是',
 '一',
 'new',
 '列',
 '表',
 '1',
 '2',
 '这',
 '里',
 '是',
 '一',
 'new',
 '列',
 '表',
 '1',
 '2',
 '这',
 '里',
 '是',
 '一',
 'new',
 '列',
 '表',
 '1',
 '2']
#切片操作省略

Page16:列表的其他用法

1
2
3
List.append('obj')
List
#在列表末尾添加新的对象 app end
1
['这', '里', '是', '一', 'new', '列', '表', '1', '2', 'obj']
List.count('fbj')
#统计某个元素在列表中出现的次数
1
0
1
2
3
List.extend(list('新列表'))
List
#在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) ext end
1
['这', '里', '是', '一', 'new', '列', '表', '1', '2', 'obj', '新', '列', '表']
1
2
3
List.remove('是')
List
#移除列表中某个值的第一个匹配项 注意是第一个
1
['这', '里', '一', 'new', '列', '表', '1', '2']

Page17:元组基本操作

Tuple = tuple(list('元组'))
Tuple
1
('元', '组')
Tuple = tuple
Tuple
1
tuple
1
2
3
4
5
Tuple0=(1,) #创建一个元素的元组时,为了避免歧义,需要在元素后面加个, 【】 ()
Tuple1=('1','2','3')
Tuple=tuple(list('这里是一个元组')) #元组tuple()
Tuple
#创建元组
1
('这', '里', '是', '一', '个', '元', '组')
len(Tuple) 
#求元组长度
1
7
Tuple+Tuple1
#合并两个元组
1
('这', '里', '是', '一', '个', '元', '组', '1', '2', '3')
Tuple*2
#重复元组
1
('这', '里', '是', '一', '个', '元', '组', '这', '里', '是', '一', '个', '元', '组')
'这' in Tuple
#判断元素是否存在于元组
1
True
sorted((2,3,5,6,8))
#对元组中的元素进行排序 sort是从小到大
1
[2, 3, 5, 6, 8]
#切片操作省略

Page18:集合

1
2
3
Set=set(list('这里是一个集合一'))
Set
#创建集合,集合元素不重复,所以'一'只有一个认第一个的位置
1
{'一', '个', '合', '是', '这', '里', '集'}
1
2
3
Set.add('x')
Set
#向集合添加元素 直接加到第一个
1
{'x', '一', '个', '合', '是', '这', '里', '集'}
1
2
3
4
Set2=set(list('新元素'))
Set.update(Set2)
Set
#把集合Set2的元素添加到Set
1
{'x', '一', '个', '元', '合', '新', '是', '素', '这', '里', '集'}
1
2
3
Set.remove('新')
Set
#删除集合中的元素'新'
1
{'x', '一', '个', '元', '合', '是', '素', '这', '里', '集'}
1
2
3
Set.discard('x')
Set
#删除指定元素,但是如果集合中没有的话就什么也不做 discard
1
{'一', '个', '元', '合', '是', '素', '这', '里', '集'}
1
2
3
print(Set.pop()) 
print(Set)
#随机删除一个,并返回该值 pop还记得在列表中是最后一个 这里随机的是’这‘
1
2
里
{'一', '集', '是', '个', '元', '素', '合', '这'}

Page19:集合运算操作简便写法

1
2
3
4
# 在对集合做运算时,不会影响原来的集合,而是返回一个运算结果
# 创建两个集合
A = {1,2,3,4,5}
B = {3,4,5,6,7}
1
2
3
# 并集
print(A | B) 
print(A.union(B) )          #联合
1
2
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
1
2
3
# 交集
print(A & B)                                      
print(A.intersection(B))      #交集的结果           
1
2
{3, 4, 5}
{3, 4, 5}
1
2
3
# 差集
print(A - B)
print(A.difference(B))                 #-等同于difference
1
2
{1, 2}
{1, 2}
1
2
3
# 异或集合
print(A ^ B)        
print(A.symmetric_difference(B))    #C语言^二进制取异或
1
2
{1, 2, 6, 7}
{1, 2, 6, 7}

Page20:字典

1
2
3
4
5
#使用大括号来创建字典{ } 
#字典是可以重复的
Dict  = {"name":"陈昱杰","age":19,"pay":40000,"job":"学不会计算机"}
#使用关键字参数和类型构造函数来创建字典
Dict
1
{'name': '陈昱杰', 'age': 19, 'pay': 40000, 'job': '学不会计算机'}
Dict = dict(name="陈昱杰",age=19,pay=40000,job="学不会计算机")
Dict
1
{'name': '陈昱杰', 'age': 19, 'pay': 40000, 'job': '学不会计算机'}
1
2
3
4
Dict.update({'AddKey':'AddValue'})
Dict
#向字典中添加键值对   'AddKey':'AddValue' updata合并 也在里面
#                   Add      Key      Value  小驼峰
1
{'name': '陈昱杰', 'age': 19, 'pay': 40000, 'job': '学不会计算机', 'AddKey': 'AddValue'}
1
2
3
Dict.pop('name')
Dict
#删除'name'对应的键值对
1
{'age': 19, 'pay': 40000, 'job': '学不会计算机', 'AddKey': 'AddValue'}
1
2
3
Dict['pay']=10000
Dict
#修改键'pay'的值为10000
1
{'age': 19, 'pay': 10000, 'job': '学不会计算机', 'AddKey': 'AddValue'}
1
2
3
4
DictMerged = Dict.copy() #复制字典,避免合并结果影响原始字典 拷贝引用
Dict2={'AddKey1':'AddValue1','AddKey2':'AddValue2','AddKey3':'AddValue3'}# 新字典
DictMerged.update(Dict2)#通过updata合并两个字典
DictMerged
1
2
3
4
5
6
7
{'age': 19,
 'pay': 10000,
 'job': '学不会计算机',
 'AddKey': 'AddValue',
 'AddKey1': 'AddValue1',
 'AddKey2': 'AddValue2',
 'AddKey3': 'AddValue3'}
'age' in Dict
#判断键在不在字典中
1
True
Dict.keys()#查看所有键 s
1
dict_keys(['age', 'pay', 'job', 'AddKey'])
Dict.values()#查看所有值 对 s
1
dict_values([18, 10000, 'Python工程师', 'AddValue'])
Dict.items()#查看键值对 item 项 s 
1
dict_items([('age', 19), ('pay', 10000), ('job', '学不会计算机'), ('AddKey', 'AddValue')])

Page23:循环

for 循环

for i in range(5):
    print(i)#注意空格 range 从0到5 换行输出
1
2
3
4
5
0
1
2
3
4
for i in range(2,6):#依旧是左闭右开
    print(i)
1
2
3
4
2
3
4
5
for i in range(2,6,2):#步长
    print(i)
1
2
2
4
1
2
3
4
5
Object=list('列表内容')#var
for i in Object:
    print(i)
else:
    print('循环结束')
1
2
3
4
5
列
表
内
容
循环结束

while循环

1
2
3
4
5
6
a=2
while a<5:  #python就是简便 连()都不用 while 跟 else 都可以
    print(a)
    a += 1
else:
    print('循环结束')
1
2
3
4
2
3
4
循环结束

Page24:分支结构

单分支

1
2
3
4
5
6
a = 3
if a < 2:
    print(a)    

if a > 2:
    print(a)
1
3

双分支

1
2
3
4
5
a = 3
if a < 2:
    print(a)
else:
    print('a不小于2')
1
a不小于2

多分支

1
2
3
4
5
6
7
a = 2
if a < 2:
    print('a小于2')
elif a > 2:
    print('a大于2')
else:
    print('a等于2')
1
a等于2

Page26:列表推导式

1
2
3
4
5
6
7
data=[]
for i in range(5): #0 1 2 3 4 
    data.append(i**2-i*2)
print(data)

data1=[i**2-i*2 for i in range(5)]
print(data1)
1
2
[0, -1, 0, 3, 8]
[0, -1, 0, 3, 8]
#既然到这里不妨比较一下 2**3**4 (2**3)**4 上下 左右 这种式子要从右到左
print(2**3**4)
1
2417851639229258349412352
print((2**3)**4)
1
4096
1
2
3
4
5
6
7
8
data=[]
for i in range(10):
    if i%2==0:
        data.append(i**2)
print(data)

data1=[i ** 2 for i in range(10) if i % 2 == 0] #偶数 连:都没有
print(data1)
1
2
[0, 4, 16, 36, 64]
[0, 4, 16, 36, 64]

Page26:pass、break和continue

pass

for i in range(3):
    #没有内容,会报错
1
2
3
4
  File "C:\Users\探索者\AppData\Local\Temp\ipykernel_11816\1463202553.py", line 2
    #没有内容,会报错
             ^
IndentationError: expected an indented block
1
2
3
for i in range(3):
    pass
    #pass占位 不报错 占位符号

break

1
2
3
4
5
6
for i in range(3):
    print('break前')
    print(i)
    break
    print('break后')
#break停止整个循环
1
2
break前
0

continue

1
2
3
4
5
6
for i in range(6):
    print('continue前')
    print(i)
    continue
    print('continue后')
#continue停止一次循环的后半段 进入下一次循环
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
continue前
0
continue前
1
continue前
2
continue前
3
continue前
4
continue前
5

Page28:函数使用

def函数

1
2
3
def fun1(x,y): #定义def
    return x ** y
fun1(2,3)#按照顺序传入参数 funl
1
8
1
2
3
def fun1(x,y):
    return x ** y
fun1(y = 2, x = 3)#通过名称传入参数,可以忽略位置顺序
1
9
1
2
3
def fun1(x , y = 3):
    return x**y
fun1(x = 3) #设置默认值,没有传入相应参数时会首先应用默认参数
1
27

lambda函数

f = lambda x , y: x ** y #return 匿名函数 可以不用函数名称
f(2 , 3)
1
8

Page29:类

class test: #self是类的名称 s1   s2  是成员变量
    def __init__(self,s1,s2):
        self.s1 = s1
        self.s2 = s2

    def f1(self):
        return self.s1 + self.s2

    def f2(self, x): #注意,号
        return (x**self.s2, x**self.s2)
aa=test(s1=2,s2=3) #定义aa
print('查看属性值', aa.s1)
print("输出f1: ", aa.f1())
print("输出f2: ", aa.f2(3))
1
2
3
查看属性值 2
输出f1:  5
输出f2:  (27, 27)

Page32:读写文件

写文件

1
2
3
with open('test.txt','w') as f:
    f.write('Hello, world!\n')
    f.write('Goodbye, world!')
1
2
3
4
f=open('test1.txt','w')
f.write('Hello, text!\n')
f.write('Goodbye, text!')
f.close()

读文件

1
2
3
4
5
6
7
8
9
with open('test1.txt','r') as f:
    context=f.readlines()
    for i in context:
        print(i)

with open('test1.txt','r') as f:
    context=f.read() #一行一行的读
    for i in context:
        print(i)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Hello, text!

Goodbye, text!
H
e
l
l
o
,

t
e
x
t
!


G
o
o
d
b
y
e
,

t
e
x
t
!
1
2
3
4
5
file = open('test1.txt','r') #路径
context = file.readlines()
for i in context:
    print(i)
file.close()