Python二级考试快开始了,而明天是打印准考证的日子😅

学安全学其他的还抽不出时间去复习,我是不是要寄了😱
先立个flag,今天复习它。
Python二级指导

Python语言基本语法元素

  1. 程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值
    语句、引用。
  2. 基本输入输出函数:input() ,eval(),print()。
  3. 源程序的书写风格。
  4. Python语言的特点。

Python保留字(关键字)

>>> inport keyword
>>> keyword.kwlist
['False', 'None', 'True', '__peg_parser__', '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']
- - 保留字 - - -
and as assert break class continue
def del elif else except finally
for from False global if import
in is lambda nonlocal not None
or pass raise return try True
while with yield - - -

相关实例在这里

基本输出函数

print函数

打印函数,用于打印值打控制台。

参数详解:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects 复数,表示可以一次输出多个对象。输出多个对象时,需要用英文逗号进行分隔。
sep 分隔多个对象的元素,可以指定是空格或者其他的参数 ,默认是空格' '
end 末尾控制,设定以什么字符串为结尾,默认是换行符‘\n’
file 指定要写入的文件对象
flush 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

一般情况下,使用前三个参数就足够了,第四第五个参数可以省略。

范例

print("Hello","Python!",sep=" -=- ",end="School")
# ----------下面是运行---------------- #
Hello -=- Python!School

input函数

input函数用于获取控制台的输入。

type(input("请输入一个数字进行判断:"))  
# ----------下面是运行---------------- #
请输入一个数字进行判断: 123
<class 'str'>

eval函数

eval函数用于执行字符串当中的运算

print(eval("pow(2,5)"))
print(eval("30*4"))
# ----------下面是运行---------------- #
32
120

源程序的书写风格

引入个Python之禅

>>>import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
  • 优美胜于丑陋
  • 明了胜于隐晦
  • 简洁胜于复杂
  • 复杂胜于凌乱
  • 扁平胜于嵌套
  • 间隔胜于紧凑
  • 可读性很重要
  • 即便假借特例的实用性之名,也不要违背上述规则
  • 除非你确定需要,任何错误都应该有对应
  • 当存在多种可能,不要尝试去猜测
  • 只要你不是Guido,对于问题尽量找一种,最好是唯一明显的解决方案
  • 做也许好过不做,但不假思索就动手还是不如不做
  • 如果你无法向人描述你的实现方案,那肯定不是一个好方案
  • 如果实现方案容易解释,可能是个好方案
  • 命名空间是绝妙的理念,要多运用

Python语言的特点

(1) 简单易学
Python是一种代表简单主义思想的语言。
(2) 面向对象
Python既支持面向过程编程,也支持面向对象编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比, Python以一种非常强大又简单的方式实现面向对象编程。
(3) 可移植性
由于 Python的开源本质,它已经被移植在许多平台上。如果小心地避免使用依赖于系统的特性,那么所有 Python程序无需修改就可以在下述任何平台上运行,这些平台包括Lnux、Windows、 FreeBSD、 Macintosh、 Solaris、OS/2、Amiga、AROS、AS/400、Beos OS/390、Z/OS、 Palm OS、QNX、VMS、 Psion、 Acorn RISC OS、VxWorks、 PlayStation、 Sharp Zaurus、Windows CE,甚至还有 PocketPC、Symbian以及 Google基于Lnux开发的Android平台。
(4) 解释性
一个用编译性语言如C或C++写的程序可以从源文件(即C或C++语言)转换到一个计算机使用的语言。这个过程通过编译器和不同的标记、选项完成。当运行程序的时候,连接转载器软件把程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于不再担心如何编译程序,如何确保连接转载正确的库等,这一切使得使用Python变得更加简单。由于只需要把Python程序复制到另外一台计算机上,它就可以工作了,这也使得Python程序更加易于移植。
(5) 开源
Python是 FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。 FLOSS是基于一个团体分享知识的概念,这是为什么Python如此优秀的原因之一 ——它是由一群希望看到一个更加优秀的 Python的人创造并经常改进这的。
(6) 高级语言
Python是高级语言。当使用 Python语言编写程序时,无需再考虑诸如如何管理程序使用的内存一类的底层细节。
(7) 可扩展性
如果需要一段关键代码运行的更快或者希望某些算法不公开,就可以把部分程序用C或C语言编写,然后在 Python程序中使用它们。
(8) 丰富的库
Python标准库确实很庞大,它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGl、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GU(图形用户界面)Tk和其他与系统有关的操作。记住,只要安装了 Python,所有这些功能都是可用的,这被称作 Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如 wXPython、 Twisted和Pyon图像库等。
(9) 规范的代码
Python采用强制缩进的方式使得代码具有极佳的可读性。

基本数据类型

  1. 数字类型:整数类型、浮点数类型和复数类型。
  2. 数字类型的运算:数值运算操作符、数值运算函数。
  3. 真假无:True、False、None。
  4. 字符串类型及格式化:索引、切片、基本的format()格式化方法。
  5. 字符串类型的操作:字符串操作符、操作函数和操作方法。
  6. 类型判断合类型间转换。
  7. 逻辑运算和比较运算。

数字类型

数字类型:整数类型int()、浮点数类型float()和复数类型complex()。

复数类型complex

x=a+bi
a 实部
b 虚部
i 虚部单位
# ------下面是基于CMD窗口的运算------ #
# 当前版本3.9
>>>> num = 12+3j
>>>> num
(12+3j)
>>> num.real
12.0
>>> num.imag
3.0
>>> complex(num)
(12+3j)

数学函数

divmod

divmod(x,y,/)
输入x,y,返回元组(x//y, x%y)
# ------下面是基于CMD窗口的运算------ #
>>> divmod(12,5)
(2,2)
>>> divmod(12.0,5.0)
(2.0,2.0)
>>> divmod(12,2)
(6,0)

abs数字绝对值

abs(num)
传入一个数字,给出它的绝对值
# ------下面是基于CMD窗口的运算------ #
>>> abs(-3)
3
>>> abs(12)
12
>>> abs(-9)
9

pow指数运算

pow(base,exp,mode=None)
mode参数默认是禁止的,可以自己加上。为此,存在两种情况
1.num = pow(base,exp) ==等价于==> base的exp次方 ==等价于==> base**exp
2.num = pow(base,exp,mode) ==等价于==> base的exp次方的模 ==等价于==> base**exp%mode
# ------下面是基于CMD窗口的运算------ #
>>> pow(2,3)
8
>>> pow(2,5)
32
>>> pow(2,3,3)
2

round小数四舍五入

round(base,mode=None)
参数有两个,和上面一样,有两种情况:
num = round(base) ==> 相当于把所有的小数四舍五入掉,只保留整数
num = round(base,mode) ==> 相当于把小数位保留到mode位,其余小数位四舍五入
上述是针对小数的,丢个整数进去是没有任何效果的。
# ------下面是基于CMD窗口的运算------ #
>>> round(12.3)
12
>>> round(12.3,3)
12.3
>>> round(12.333333,3)
12.333
>>> round(12.333555,3)
12.334 -> 出现四舍五入了

max与min返回列表最大最小值

max(...)
上个原始注解:
max(可迭代,*[,默认=obj,key=func])->值
max(arg1, arg2,*args,*[,key=func])->值
使用单个可迭代参数,返回其最大的项目。这
默认仅关键字参数指定要返回的对象,如果
提供的可迭代对象为空。
使用两个或多个参数,返回最大的参数。
# 恕我冒昧,这原始注解我不是看的很懂
# ------下面是基于CMD窗口的运算------ #
>>> max(1,2,3,4)
4
>>> max([1,2,3,4])
4
>>> max([1,2,3,4],[4,5,6,7])
[4, 5, 6, 7]
>>> max([1,2,3,4],[4,5,6,7],[3,6,9,10])
[4, 5, 6, 7]
>>> max([1,2,3,4],[4,5,6,7],[3,6,9,10,3],[8,9,10,11])
[8, 9, 10, 11]

关于 min() 简单使用和max同理上下原始注解,此处不再赘述。

min(可迭代,*[,默认=obj,key=func])->值
min(arg1, arg2,*args,*[,key=func])->值


使用单个可迭代参数,返回其最小项。这
默认仅关键字参数指定要返回的对象,如果
提供的可迭代对象为空。
使用两个或多个参数,返回最小的参数。

数字类型的运算

数字类型的运算:数值运算操作符、数值运算函数。

运算函数列在上面,此处不赘述。

数值运算操作符

+ - * /% 
加减乘除余
//
整数除,除完后小数部分直接省略,10//3=>3
**
幂运算,2**3相当于是23次方
+x,-x
正负数

# *====*====*====*====*====*

增强操作符

+= -= *= /= **= //= %=
简单解释一下就是:
x += y ==等同于==> x = x + y

真假无(True/False/None)

真假无:True、False、None。

布尔类型

布尔类型只有两种状态,true或者false。

布尔类型为false的几种情况如下:
==> "" ,'' ,[] ,0 ,() ,{} ,None

这几种情况使用bool()单独鉴定时返回false
除了上述情况外,其他情况基本上都是:
符合判断条件 ==> True
不符合判断条件 ==> False

None

空值,比较特殊。

下面给出一个结果
>>> None == False
False
# 说明None不等于False
not None == not False == not '' == not 0 == not [] == not {} == not ()

字符串类型及格式化

详细教程请参考菜鸟教程

字符串函数

chr()和ord()

注:它们的转换时针对单个字符串而言的,不是多个字符串。

chr(i,/)
返回一个字符的Unicode字符串,序号为i;0<=i<=0x10ffff
ord(c,/)
返回单字符字符串的Unicode代码点。
# 简单讲,就是:
# ord获取字符串的数字(Unicode代码点)
# chr将数字转换为字符串

# --CMD运行结果入下-- #
>>> ord("你")
20320
>>> chr(20320)
'你'

oct()1,hex(),len()

oct() # 返回整数的八进制形式
hex() # 返回整数的十六进制形式
len() # 测量字符串/数组的长度
str() # 强制转换为字符串

# --CMD运行结果入下-- #
>>> oct(12)
'0o14'

>>> hex(233)
'0xe9'

>>> len('12')
2
>>> len([1,2,3,4])
4

>>> str(123456)
'123456'

字符串内置函数

字母处理

a = "a123abcASD"
a.upper() => 小写字母变大写
a.lower() => 大写字母变小写
a.swapcase() => 大小写互换
a.capitalize() => 首字母大写其他小写
a.title() => 首字母大写

实例

a = "sec123Go"
print(a.lower())
print(a.upper())
print(a.swapcase())
print(a.capitalize())
print(a.title())
# ---运行结果--- #
sec123go
SEC123GO
SEC123gO
Sec123go
Sec123Go
格式化
a.ljust(width)  => 根据width扩展字符串长度,并且左边对齐,空格补全
a.rjust(width) => 根据width扩展字符串长度,并且右边对齐,空格补全
a.center(width) => 根据width扩展字符串长度,并且中间对齐,空格补全
a.zfill(width) => 根据width扩展字符串长度,并且右边对齐,用0补全

实例

a = "sec123Go"
print("-"+a.ljust(20)+"-")
print("-"+a.rjust(20)+"-")
print("-"+a.center(20)+"-")
print("-"+a.zfill(20)+"-")
# 注意!"-"是我用来显示边界的。
# ---运行结果--- #
-sec123Go -
- sec123Go-
- sec123Go -
-000000000000sec123Go-

搜索
a.find(str,beg, end) => 从字符串a的beg和end内搜索字符串str,搜索到就返回下标,搜索不到就返回-1
a.index() => 和上面功能一样,但找不到就报错
a.count() => 统计指定字符串出现的次数
a.rfind() => 从右边开始查找

实例

a = "sec123Go"
print(a.find('secw'))
print(a.index('123',2,len(a)))
print(a.count('ec'))
print(a.rfind('sec'))
# ---运行结果--- #
-1
3
1
0

format格式化(要点)

"{}".format("str")    # 格式化字符串,类似%s,传递值能多不能少
模板:{:填充 对齐 宽度 千位分隔符 精度 类型}

实例1

print("I {x} {y}".format(x='like',y="python"))
print("{:=>20}".format('class'))
print("{:=<20}".format('class'))
print("{:=^20}".format('class'))
# --CMD运行结果入下-- #
I like python
===============class
class===============
=======class========

实例2

print("{:+.2f}".format(3.12345))
print("{:-.2f}".format(-3.12345))
print("{:.0f}".format(3.12345))
# --CMD运行结果入下-- #
+3.12
-3.12
3

实例3

print("{:d}".format(11))
print("{:b}".format(11))
print("{:o}".format(11))
print("{:x}".format(11))
print("{:#x}".format(11))
print("{:#X}".format(11))
# --CMD运行结果入下-- #
11
1011
13
b
0xb
0XB

其他字符串内置函数

a.replace('str','SSS'[,num]) => 将a里面的'str'替换成'SSS'总计num次
a.strip() => 去除字符串两边的空格,另外还有个左去除(a.lstrip())和右去除(a.rstrip())
a.split(['str']) => ['str']参数可选,指定字符串切割字符为数组,或者使用默认切割。
string.join(seq) => 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

实例

a = " sec123secGo "
print('-'+a.replace('sec','DNS',1)+'-')
print('-'+a.strip()+'-')
print(a.split())
print(a.split('s'))
print('~'.join(['I','like','Python']))
# --CMD运行结果入下-- #
- DNS123secGo -
-sec123secGo-
['sec123secGo']
[' ', 'ec123', 'ecGo ']
I~like~Python

格式化操作

字符串运算符

string1+string2         字符串拼接
string*2 string变成俩份,也就是'stringstring'
string[x] 获取指定位置字符串
string[x:y] 字符串切片,把指定区域字符串截取出来
string[::-1] 翻转字符串
string in string1 查看字符串string是否存在于string1当中,是则返回true,否则false
string not in string1 查看字符串string是否不存在于string1当中,是则返回true,否则false
r'string' 输出原始字符串,即使是换行符也同样输出

实例

a = " sec123secGo "
print(a)
print(a[3])
print(a[-3])
print(a[1:len(a)-1])
print(a[::-1])
print('1' in a)
print(r'\n\n\n')
# --CMD运行结果入下-- #
sec123secGo
c
G
sec123secGo
oGces321ces
True
\n\n\n


补充:计量百分比
for i in range(101):
print("\r{:5}%".format(i),end="")
time.sleep(0.03)

类型判断和类型间转换

类型判断
type(object) => object,放需要判断类型的数据即可

类型强转
float(object) int(object) str(object)

逻辑运算和比较运算

比较运算符
< > <= >= != ==
逻辑运算符
and 全true则true
or 有true则true
not 反转布尔值