实训日记 | Day 01. Hello Python.
前言
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 | #!/usr/bin/env python3 |
这是作什么用处的呢?[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 | if True: |
1 | if True: |
同一语句多行
如果一行代码很长,影响阅读或观感,可以使用\来实现多行语句。例如:
1 | averylongvariablename = anotherverylongvariablename + \ |
效果等价于averylongvariablename = anotherverylongvariablename + wowawesomeman + thatsmyveryfirsttime
在[ ], { }, ( ) ,''' '''的多行语句,不需要使用\就可以换行,例如:
1 | dic1 = { 'name':'Zorua', |
同一行多个语句
由于Python不再使用;而是使用换行符来分割语句,因此如果想在同一行写多个语句的话,应使用;来进行分割。
例如:
1 | i = 100;i = i + 100;print(i) |
区分大小写
python中是区分大小写的,不管是变量、函数、还是类,都要严格的区分大小写。
例如,zorua和Zorua是两个不同的变量,name和Name也是完全不同的两个变量。
标识符命名规则
- 可以以字母或下划线
_打头。 - 由字母、数字、下划线组成。
- 标识符对大小写敏感。
即使在Python3中,使用中文命名也是可以的,但仍不建议这样使用(因为切换输入法挺麻烦的)。

关键字
关键字也叫保留字,类似C语言中的for``while等词,不能被用于变量命名的,具有特别意义的标识符。
1 | import keyword |
上面的代码可以输出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 | #可以顶格写注释。 |
如果需要块注释,可以使用'''或"""(连续三个单引号或双引号),作用等同于C/C++中的/* */
序列解包
1 | i,j = 100,50 |
i,j = 100,50等价于i=100 j=50
以此类推,还可以实现i,j,k = 1,2,3,i,j,k=[1,2],1,(1,2)等等。需要注意左右的表达式元素数量相同。
输出及输入
- 输出 print()
- 输入 input()
1 | name = input("Please input your name:") #括号里是提示语 |
格式化的输出除了可以使用上述形式以外,也可以使用如下形式:
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 | strHello1 = 'Hello World!' |
访问字符串的值
Python中没有类似C语言中的char类型,即使是单个字符,也会被认为是字符串。
可以使用索引/切片来访问字符串的值。格式为str[start:end:step],效果是左闭右开 [a,b)。
例如str[0:3:1]会从str的第一个字符取到第二个字符。
可以省略其中的几个参数。
- start缺省值为0,是起始位置。
- end缺省值为字符串长度-1,是终止位置。
- step缺省值为1,是间隔字符。
- 参数为负数时,是从右到左数的索引。
1 | strAlphaBet7='abcdefg' |
上面的前四行输出语句,全都可以输出字符串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 | strFind="My name is aaabc" |
上述语句输出的结果为the position of bc = 14。
find函数将在字符串中找到首个匹配的字符串的起始位置。
字符串计数
1 | strCount="My name is aaabc" |
上述语句输出的结果为:
1 | the amount of a = 4 |
注意,第二条计数,查找aa,并不会认为字符串aaa中存在两个aa。
字符串位置
该系列的函数可以通过填充字符来调节原字符串的位置。
1 | print('aaa'.center(10)) |
输出结果为
1 | aaa |
- 第一个参数为参考的长度值。
- 第二个参数是填充字符。缺省值为空格。
去空格
1 | strWhitespace=' abc ' |
其他
只例举了一些可能比较常用的。
| 函数名称 | 功能 |
|---|---|
| lower | 将字符串里的字符全变成小写 |
| upper | 将字符串里的字符全变成大写 |
| isupper | 判断字符串当中的字母是否完全是大写 |
| islower | 判断字符串当中的字母是否完全是小写 |
| istitle | 判断字符申是否满足title格式 |
| isspace | 判断字符串是否完全由空格组成 |
| startswith | 判断字符串的开头字符,也可以截取判断 |
| endswith | 判断字符串的结尾字符,也可以截取判断 |
| isalnum | 判断是否完全由字母和数字组成 |
| isalpha | 判断是否完全由字母组成 |
| isdigit | 判断是否完全由数字组成 |





