前言

2020年7月20日,实训开始了。
这个日记系列将用于记录我在这一个月内的成长与收获。由于一天的工作量很大,很难再安排时间进行整理😂。
先说说这个实训相关的一些情况叭。

7月20日到8月14日,周末正常休息。

节次 时间
1–2节 🕣 8:30–10:00
3–4节 🕙 10:15–11:45
5–6节 🕜 13:30–15:00
7–8节 🕞15:15–16:45

Python 3.7.4
Pycharm
Navicat
腾讯QQ
腾讯会议 WeMeet

什么是Python

以下内容援引自百度百科
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Python是一种解释型脚本语言,可以应用于以下领域:

  • Web 和 Internet开发
  • 科学计算和统计
  • 人工智能
  • 桌面界面开发
  • 软件开发
  • 后端开发
  • 网络爬虫

以下内容援引自菜鸟教程
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

项目新建

按下Alt+INSERT新建项目。
除了可以选择项目位置以外,还可以配置项目的解释器

在文件夹下右键,新建-Python File可创建*.py文件。

Python文件的声明

一般的*.py文件都会以如下的代码开头。

1
2
#!/usr/bin/env python3
# coding=utf-8

这是作什么用处的呢?[1]

第一行

通常为#!/usr/bin/env python3#!/usr/bin/python
作用为指定解释器,增强代码可移植性
必须处在第一行,用来指定本脚本用什么Interpreter来执行。
那么,刚刚在新建项目时已经指定了Interpreter了,为什么这里还需要呢?
因为有时候,我们执行*.py文件,是直接在shell里使用./来执行。这里的声明,就是为了这种执行提供了解释器位置。

第二行

通常为以下三种之一:

  • # coding=utf-8
  • # coding:utf-8
  • # -*- coding:utf-8 -*-

声明Python文件使用UTF-8编码(无此声明时,默认为ASCII编码),以解决python2中有中文字符(包括注释中的)会报错的情况。
必须处在首行或第二行,格式满足正则表达式^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)即可。

Python语法特点

无需结尾符

C/C++Java等等编程语言,每一条语句都以;进行结尾,Python以换行符结尾。

强调缩进

C/C++中,代码块以{ }分割开,而Python中则以缩进来表示。
同一级的代码,缩进的空格数量应该一致。
例如下面两个代码,执行的结果是不一样的。

1
2
3
4
5
if True:
print ("True")
else:
print ("False")
print ("Over") #这个语句和if判断语句是同级的
1
2
3
4
5
if True:
print ("True")
else:
print ("False")
print ("Over")#这个语句和输出false的语句是同级的

同一语句多行

如果一行代码很长,影响阅读或观感,可以使用\来实现多行语句。例如:

1
2
3
averylongvariablename = anotherverylongvariablename + \
wowawesomeman + \
thatsmyveryfirsttime

效果等价于averylongvariablename = anotherverylongvariablename + wowawesomeman + thatsmyveryfirsttime
[ ], { }, ( ) ,''' '''的多行语句,不需要使用\就可以换行,例如:

1
2
3
dic1 = { 'name':'Zorua',
'class':5,
'hobby':'game'}

同一行多个语句

由于Python不再使用;而是使用换行符来分割语句,因此如果想在同一行写多个语句的话,应使用;来进行分割。
例如:

1
i = 100;i = i + 100;print(i)

区分大小写

python中是区分大小写的,不管是变量、函数、还是类,都要严格的区分大小写。
例如,zorua和Zorua是两个不同的变量,name和Name也是完全不同的两个变量。

标识符命名规则

  • 可以以字母或下划线_打头。
  • 字母、数字、下划线组成。
  • 标识符对大小写敏感。
    即使在Python3中,使用中文命名也是可以的,但仍不建议这样使用(因为切换输入法挺麻烦的)。

关键字

关键字也叫保留字,类似C语言中的for``while等词,不能被用于变量命名的,具有特别意义的标识符。

1
2
import keyword
print(keyword.kwlist)

上面的代码可以输出Python中的关键字。
输出的结果为:

1
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

注释

不论在何种编程语言中,都有注释这一设计存在。注释可以增加代码的可阅读性;在调试代码时,注释也可被用于阻止某一代码的进行。
Python中的注释以#开头。
在Pycharm中,快速注释/取消注释可以使用Ctrl+/的快捷键。

1
2
#可以顶格写注释。
print('Hello, world!') #也可以在代码句后写注释。

如果需要块注释,可以使用'''"""(连续三个单引号或双引号),作用等同于C/C++中的/* */

序列解包

1
2
3
i,j = 100,50
print(i)
print(j)

i,j = 100,50等价于i=100 j=50
以此类推,还可以实现i,j,k = 1,2,3i,j,k=[1,2],1,(1,2)等等。需要注意左右的表达式元素数量相同。

输出及输入

  • 输出 print()
  • 输入 input()
1
2
name = input("Please input your name:")   #括号里是提示语
print("{0} {1}".format(name," Hello")) #格式化的输出

格式化的输出除了可以使用上述形式以外,也可以使用如下形式:

1
print("%s %s" % (name,"   Hello"))

其中的%s为占位符。占位符的表示形式和C/C++的一样,也就是说,上述语句用C语言写就是:

1
printf("%s %s",name,"  Hello");

不过,需要注意的是,这些格式化字符串除了能用在print语句以外,也可以在其他场合格式化字符串。

另外,print()函数也能接收多个参数来进行输出,中间会自动添加一个空格(由sep参数来指定)。

不换行的输出


print() 函数中的end参数,默认为\n。因此每次在输出语句后,它会自动补充一个换行符。
如果想不换行的输出,可以将其改为print(123,end='')
同理,如果想在每次输出后,自动补充一个空格,可以为print(123,end=' ')

input函数的其他用法

当你想实现如同C语言语句中的system("pause")(请按任意键继续)的效果时,可以键入:
input('请按回车键继续')

运算符

运算符号和其他编程语言大同小异。在此简要地说明一些和其他语言所有区别的。

符号 作用 示例
** 3**2 -> 9
// 取整除 9//4 -> 2
in 如果在指定的序列中找到值返回 True,否则返回 False。
is is 是判断两个标识符是不是引用自一个对象
:= 海象运算符,可在表达式内部为变量赋值。 详情可以看这篇文章

常见的函数

以下内容援引自菜鸟教程。

数学函数

函数 返回值 ( 描述 )
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y)
round(x [,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。
sqrt(x) 返回数字x的平方根。

随机数函数

函数 描述
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

三角函数

三角函数

函数 描述
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x) 将角度转换为弧度

数学常量

常量 描述
pi 数学常量 pi(圆周率,一般以π来表示)
e 数学常量 e,e即自然常数(自然常数)。

字符串

定义:一个有序的不可修改的以引号包围的序列。
可以使用单引号'"创建字符串。
如果要创建多行的字符串,可以使用'''"""

1
2
3
4
strHello1 = 'Hello World!'
strHello2 = "Hello World!"
strHello3 = '''Hello
World!'''

访问字符串的值

Python中没有类似C语言中的char类型,即使是单个字符,也会被认为是字符串。
可以使用索引/切片来访问字符串的值。格式为str[start:end:step],效果是左闭右开 [a,b)。
例如str[0:3:1]会从str的第一个字符取到第二个字符。
可以省略其中的几个参数。

  • start缺省值为0,是起始位置。
  • end缺省值为字符串长度-1,是终止位置。
  • step缺省值为1,是间隔字符。
  • 参数为负数时,是从右到左数的索引。
1
2
3
4
5
6
7
8
9
10
11
12
strAlphaBet7='abcdefg'
print(strAlphaBet7[-1]) #1
print(strAlphaBet7[6]) #2
print(strAlphaBet7[6:7] #3
print(strAlphaBet7[len(strAlphaBet7)-1]) #4
print(strAlphaBet7[0:3:1]) #5
print(strAlphaBet7[0:3]) #6
print(strAlphaBet7[3:0:-1]) #7
print(strAlphaBet7[-7:-4]) #8
print(strAlphaBet7[0:7:2]) #9
print(strAlphaBet7[:3]) #10
print(strAlphaBet7[2:]) #11

上面的前四行输出语句,全都可以输出字符串g
5-8条语句,会输出字符串abc
9-11条语句,会输出不同的内容。感兴趣的读者可以自行测试。

分割字符串

1
print('123ab456ab1'.split('ab',2))

上述语句输出的结果为['123','456','1']

  • 第一个参数是按照什么字符串来分割
  • 第二个参数是分割几次。分割2次,就是分割成3部分。

替换字符串

1
print('aBcDabcdabcd'.replace('a','A',2))

上述语句输出的结果为ABcDAbcdabcd

  • 第一个参数是原字符。
  • 第二个参数是替换字符。
  • 第三个参数是替换次数。

字符串查找

1
2
strFind="My name is aaabc"
print("the position of bc = %d"%strFind.find('bc'))

上述语句输出的结果为the position of bc = 14
find函数将在字符串中找到首个匹配的字符串的起始位置。

字符串计数

1
2
3
strCount="My name is aaabc"
print("the amount of a = %d"%str5.count('a'))
print("the amount of aa = %d"%str5.count('aa'))

上述语句输出的结果为:

1
2
the amount of a = 4
the amount of aa = 1

注意,第二条计数,查找aa,并不会认为字符串aaa中存在两个aa

字符串位置

该系列的函数可以通过填充字符来调节原字符串的位置。

1
2
3
4
print('aaa'.center(10))
print('aaa'.center(10,'0')) #居中
print('aaa'.ljust(10,'0')) #居左
print('aaa'.rjust(10,'0')) #居右

输出结果为

1
2
3
4
   aaa    
000aaa0000
aaa0000000
0000000aaa
  • 第一个参数为参考的长度值。
  • 第二个参数是填充字符。缺省值为空格。

去空格

1
2
3
4
strWhitespace='    abc    '
print(strWhitespace.strip()) #去掉两边空格
print(strWhitespace.lstrip()) #去掉左边空格
print(strWhitespace.rstrip()) #去掉右边空格

其他

只例举了一些可能比较常用的。

函数名称 功能
lower 将字符串里的字符全变成小写
upper 将字符串里的字符全变成大写
isupper 判断字符串当中的字母是否完全是大写
islower 判断字符串当中的字母是否完全是小写
istitle 判断字符申是否满足title格式
isspace 判断字符串是否完全由空格组成
startswith 判断字符串的开头字符,也可以截取判断
endswith 判断字符串的结尾字符,也可以截取判断
isalnum 判断是否完全由字母和数字组成
isalpha 判断是否完全由字母组成
isdigit 判断是否完全由数字组成

  1. 参考资料:https://blog.csdn.net/u010871448/article/details/96476455 ↩︎