The road of Python


算术运算符 :+(加);-(减);*(乘);/ (除);//(取整除);%(取余) **(二次方)

 1 >>> 2+3
 2 5
 3 >>> 3-2
 4 1
 5 >>> 2*3
 6 6
 7 >>> 5/2
 8 2.5
 9 >>> 5//2
10 2
11 >>> 5%2
12 1
13 >>> 2**3
14 8

比较运算符:>、 <、 >=、 <=、 ==、!=   得到True/False

顾名思义,比较运算符是用来做比较的,比较的结果会有两种,分别是成立和不成立,成立的时候,结果是 True,不成立的时候结果是False。 True和False 用来表示比较后的结果

 1 >>> a = 5
 2 >>> b = 3
 3 >>> a > b  # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 
 4 True
 5 >>> a < b  # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。
 6 False
 7 >>> a <= b  # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。
 8 False
 9 >>> a >= b  # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。
10 True
11 >>> a == b  # 检查,两个操作数的值是否相等,如果是则条件变为真。
12 False
13 >>> a != b  # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。
14 True

赋值运算符

=、+=、-=、*=、/=、%=、//=、**=

num = 2    
num += 1   # 等价于 num = num + 1
num -= 1   # 等价于 num = num - 1
num *= 1   # 等价于 num = num * 1
num /= 1   # 等价于 num = num / 1
num //= 1    # 等价于 num = num // 1
num %= 1     # 等价于 num = num % 1
num **= 2    # 等价于 num = num ** 2

逻辑运算符: not 、and、 or

逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为True或False的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。

>>> a > b and  a < b  # 如果两个操作数都是True,那么结果为True,否则结果为False。
False
>>> a > b or  a < b  # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。
True
>>> not a > b  # 反转操作的状态,操作数为True,则结果为False,反之则为True
False

结果为True的时候,我们一般称 结果为 真, 逻辑运算符会有一个真值表。

优先级

运算符  描述
** 指数(最高优先级)

~ + -

按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>><< 右移,左移运算符
& 位 'AND'
^ 位运算符
<= <> >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符 
is is not 身份运算符
in not in 成员运算符
nor or adn 逻辑运算符

 

 

 

 

 

 

 

 

 

 

 

 

对应操作字符串类型

 1 1    #重复输出字符串
 2 print('hello'*20)
 3 
 4 2     #[] ,[:] 通过索引获取字符串中字符,这里和列表的切片操作是相同的,具体内容见列表
 5 print('helloworld'[2:])
 6 
 7 3    #关键字 in,查询字符串是否包含在内
 8 print(123 in [23,45,123]) #在内返回true
 9 print('e2l' in 'hello') #不在内返回false
10 
11 4    #%   格式字符串
12 print('alex is a good teacher')
13 print('%s is a good teacher'%'alex') #变成一个可替代的变量,方便后期
14 
15 5    #字符串拼接
16 a='123'
17 b='abc'
18 d='44'
19 # 老方法
20 c=a+b
21 print(c)
22 
23 # 新方法
24 c= ''.join([a,b,d]) #留空字符串
25 print(c)

数据类型

列表,元组
  索引(下标) ,都是从0开始


  切片

 1 a=['ming','hong','huang','ding','su']
 2 print(a[1:])#取到最后(从标位1开始取到最后)
 3 >>> ['hong', 'huang', 'ding', 'su']
 4 
 5 print(a[1:-1])#取到倒数第二值(从下标1位取到倒数第二值)
 6 >>> ['hong', 'huang', 'ding']
 7 
 8 print(a[1:-1:1])#从左到右一个一个去取(从左下标1开始到倒数第二值,步长1)
 9 >>> ['hong', 'huang', 'ding']
10 
11 print(a[1::2])#从左到右隔一个去取
12 >>> ['hong', 'ding']
13 
14 print(a[3::-1])#从下标3开始,隔一个倒着去取
15 >>> ['ding', 'huang', 'hong', 'ming']
16 
17 print(a[-2::-1])#从倒数第二个开始,隔一个倒着去取
18 >>> ['ding', 'huang', 'hong', 'ming']

  
    .count()   #查某个元素的出现次数

1 t=['to','be','or','not','to','be',].count('to')
2 print(t)
3 >>> 2

    .index()  #根据内容找其对应的位置

1 a = ['ming','hong','huang','ding','su']
2 print(a.index('hong'))
3 >>> 1

    "内容" in 列表   #查询内容是不是在列表里面

1 a = ['ming','hong','huang','ding','su']
2 print ('zhu' in a)
3 >>> False

  增加
    .append() 追加

1 a = ['ming','hong','huang','ding','su']
2 a.append('xuepeng') #默认查到最后一个位置
3 print(a)
4 >>> ['ming', 'hong', 'huang', 'ding', 'su', 'xuepeng']
5 a.insert(1,'xuepeng') #将数据插入到任意一个位置,1是下标
6 print(a)
7 >>> ['ming', 'xuepeng', 'hong', 'huang', 'ding', 'su', 'xuepeng']

    .insert(index, "内容")  #在某个位置(index)插入内容

1 a = ['ming','hong','huang','ding','su']
2 a.insert(1,'zhu')
3 print(a)
4 >>>['ming', 'zhu', 'hong', 'huang', 'ding', 'su']

    列表.extend(列表)   #某列表加入某列表

1 a = [1,2,3]
2 b = [4,5,6]
3 a.extend(b)
4 print (a)
5 >>> a = [1,2,3,4,5,6]
6 print (b)
7 >>> b = [4,5,6]

  修改
    a[index] = "新的值"  # 赋予"新的值"

1 a = ['ming','hong','huang','ding','su']
2 a[0] = "zhu" 
3 print(a)
4 >>>['zhu', 'hong', 'huang', 'ding', 'su']

    a[start:end] = [a,b,c]  #重新对列表赋值

1 a = ['ming','hong','huang','ding','su']
2 a[1:3] = ["a","b"]        #包含1的位置到2位置(前包后不包原则)
3 print(a)
4 >>>['ming', 'a', 'b', 'ding', 'su']

  删除

    del a

a=['ming','hong','huang','ding','su']
del a
print(a)    #是报错的,因为a列表已经被删除了
>>>NameError: name 'a' is not defined

    del a[index]  #删除在列表中已知位置的的元素

1 a = ['ming','hong','huang','ding','su']
2 del a[0] #直接删除a列表内0下标的元素
3 print(a)
4 >>>['hong', 'huang', 'ding', 'su']

    remove("内容")

1 a = ['ming','hong','huang','ding','su']
2 a.remove('ming') #直接删除知道的元素名
3 print(a)
4 >>>['hong', 'huang', 'ding', 'su']

    pop(index)  #删除指定位置的元素并返回这个被删除了的元素

a = ['ming','hong','huang','ding','su']
b = a.pop(1)    #删除指定位置的元素并返回这个被删除了的元素
c = a.pop()    #不填下标的话,直接删除最后一个元素
print(a)
>>>['ming', 'huang', 'ding', 'su']
print(b)
>>>hong
print(c)
>>>['ming','hong','huang','ding']

    a.clear()  #清空列表所有元素

1 a = ['ming','hong','huang','ding','su']
2 a.clear()    #清空a列表内所有元素
3 print(a)
4 >>>[]
5 b = a.clear() 6 print(b) 7 >>>None

  排序

    sort ()  #列表从小到大重新排序

1 x = [4,6,2,1,7,9]
2 x.sort()
3 print(x)
4 >>> [1, 2, 4, 6, 7, 9]

    reverse()  #使列表倒序排列

1 a=['ming','hong','huang','ding','su']
2 a.reverse()
3 print(a)
4 >>> ['su', 'ding', 'huang', 'hong', 'ming']

  身份判断(疑问)
    >>> type(a) is list
    True
    >>>

列表拓展知识

a = ['xiaohong','jinxin','xiaohu','xiaoming','sanpang','xiaoming'] #计算列表两个同名字的位置

first_xm_index = a.index("xiaoming") #get the first xiaoming
print("first_xm_index",first_xm_index)

little_list = a[first_xm_index+1:] #切片取小列表

second_xm_index = little_list.index("xiaoming") #取第二个小明在小列表里的位置

print("second_xm_index",second_xm_index)

second_xm_index_in_big_list = first_xm_index + second_xm_index + 1 #通过第一个小明和第二个小明位置来计算 第二个小明在大列表里的位置

print("second_xm_index_in_big_list",second_xm_index_in_big_list)

print("second xm:",a[second_xm_index_in_big_list])
<<

   元组

    tuple()  #类似列表,但元组元素可取,不可改变

 1 a = (1,2,3,4)
 2 print(a[1])
 3 >>> (2)        #跟列表一样可以取值
 4 
 5 print(a[1:2])
 6 >>> (2,)        #元组的索引都有逗号
 7 
 8 print(a[1:3])
 9 >>> (2,3)
10 
11 a[1] = 5        #元组不可改变元素
12 print(a)
13 >>> 报错

 六、Dictionary(字典)

  字典两大特点:无序,键唯一

  不可变类型:整型,字符串,元组  

  可变类型:列表,字典

1 dic={'name':'alex','age':35,'hobby':'girl','is_handsome':True}
2 print(dic)
3 print(dic['name'])#name 整型,不可修改,不报错
1 dic={'[1,2,3]':'alex','age':35,'hobby':'girl','is_handsome':True}
2 print(dic)
3 print(dic['1'])#[1,2,3]不是整型,时列表,可修改,报错
1 dic={'1':'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} #{'girl_name':'铁锤','age':45}是键值可以用字典
2 print(dic['hobby']) #不报错

1 dic={{'1':'111'}:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} #{'1':'111'}这个是键,不可以用字典表示
2 print(dic['hobby']) #报错

 1、增

1 dic1 = {'name':'alex'}
2 dic1['age']=18 #由于键'age'是没有的,所以会变成增加
3 print(dic1) 
 1 dic1 = {'name':'alex'}
 2 dic1['age'] = 18
 3 print(dic1)
 4 
 5 #键存在,不改动的情况下,返回字典中相应的键对应的值
 6 ret1 = dic1.setdefault('age','34')
 7 print(dic1)
 8 
 9 #键不存在,在字典中增加新的键值对,并返回一个参数'ret2'
10 ret2 = dic1.setdefault('hobby','girl')
11 print(dic1)

2、查

 1 dic3 = {'age':18, 'name':'alex', 'hobby':'girl' }#空格无所谓
 2 print(dic3['name'])
 3 print(type(dic3.keys()))
 4 #print出的结果是,不是一个dict_key类型
 5 
 6 #想用其中的键的话
 7 print(list(dic3.keys()))
 8 
 9 #想用其中的键值的话
10 print(list(dic3.values()))
11 
12 #想用其中的键值对的话
13 print(list(dic3.items()))

3、改

1 dic3 = {'age':18, 'name':'alex', 'hobby':'girl' }
2 print(dic3)
3 
4 dic3['age'] = 55#跟列表修改大致,列表利用位置,字典利用键
5 print(dic3)
 1 dic4 = {'age':18, 'name':'alex', 'hobby':'girl'}
 2 
 3 #如果update的内容,是新的键值对,那会新增
 4 dic5 = {'1':'111', '2':'222'}
 5 dic4.update(dic5)#提供了dic5给他更新
 6 print(dic4)
 7 print(dic5)
 8 
 9 #如果updata的内容,是已有的键,不同的值,那会修改
10 dic6 = {'1':'111', '2':'3333333'}
11 dic4.update(dic6)#提供了dic6给他更新
12 print(dic4)

4、删

  clear、del、pop直接删除某个键下的值

dic5 = { 'name':'alex', 'age':18, 'class':'1'}
dic5.clear() #清空字典
print(dic5)

dic5 = { 'name':'alex', 'age':18, 'class':'1'}
del dic5['name'] #删除字典中指定键值对
print(dic5)

dic5 = { 'name':'alex', 'age':18, 'class':'1'}
ret = dic5.pop('age') #pop返回该键值对的值
print(dic5)
print(ret)

5、其他操作以及涉及到的方法

  5.1 dict.fromkeys

dic6=dict.fromkeys(['host1','host2','host3'],'test')
print(dic6) #{'host1': 'test', 'host2': 'test', 'host3': 'test'}

dic6['host2']='abc'
print(dic6)

dic6=dict.fromkeys(['host1','host2','host3'],['test1','tets2'])
print(dic6) #{'host1': ['test1', 'tets2'], 'host2': ['test1', 'tets2'], 'host3': ['test1', 'tets2']}

dic6['host2'][1]='test3'#只改一个,但是后面所有都变 
print(dic6) #{'host3': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host1': ['test1', 'test3']}

  5.2 d.copy() 对字典 d 进行浅复制,返回一个和d有相同键值对的新字典

  5.3 字典嵌套

  5.4 sorted(dict):返回一个有序的包含字典所有key的列表

dic={5:'555',2:'666',4:'444'}
print(sorted(dic))
#输出[2,4,5],排序并提供key
#print(sorted(dic.values()))
#输出['222','555','666']
#print(sorted(dic.items()))
#输出[(2,'666'),(4,'444'),(5,'555')]

  5.5 字典的遍历

dic5={'name': 'alex', 'age': 18}

for i in dic5:
    print(i,dic5[i])
#一开始print(i),只是把健输出,加入dic5[i]就,可以一同输出

for i,v in dic5.items():
    print(i,v)
#另一种表达,推荐第一种

相关模块

 示例

 1 #这些通告都是 Word 文件,阿威要在这些文件结尾处加上公司的电子章与公司名称,并且需要调整文字的字号,加粗和对齐方式。
 2 
 3 import os
 4 from docx import Document
 5 from docx.enum.text import WD_ALIGN_PARAGRAPH
 6 from docx.shared import Pt
 7 
 8 # 设置目标文件夹路径
 9 path = './通告模板/'
10 path_target = './涨薪通告/'
11 
12 # 获取目标文件夹下的所有文件名
13 file_list = os.listdir(path)
14 
15 for file in file_list:
16     # 拼接文件路径
17     file_path = path + file
18     
19     # 打开 Word 文件
20     doc = Document(file_path)
21 
22     # 添加 Paragraph 对象 para_1
23     para_1 = doc.add_paragraph('盖章: ')
24     # 添加 Run 对象 run_stamp
25     run_stamp = para_1.add_run()
26     run_stamp.add_picture('./Shining.png')
27 
28     # 添加 Paragraph 对象 para_2
29     para_2 = doc.add_paragraph()
30     # 设置对齐方式
31     para_2.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT
32     # 添加 Run 对象 run_comp
33     run_comp = para_2.add_run('闪光科技金融公司(Shining Fintech Company)')
34     # 设置字体
35     run_comp.font.size = Pt(14) # 字体大小
36     run_comp.font.bold = True # 字体加粗
37 
38     # 设置目标文件夹路径
39     new_file = path_target + file
40     # 保存文件
41     doc.save(new_file)
42     print(f'{file} 已处理完毕。')

数据统计指标