python 学习笔记

这是一篇发布于 1600 天前的文章,部分信息可能已发生改变。

学习 py 只是为了考过计算机二级,所以这里都是基础,而且写的很菜。

python 为脚本语言 (脚本语言 = 解释语言 = 交互式)
C 语言为静态语言 (静态语言 = 需要编译 = 文件)

python 具有通用性

python 语法简洁

python只有33 个保留字

python 采用严格的 缩进 来表明程序的格式框架

缩进 是 python 语言中表明程序框架的唯一手段

当表达分支、循环、函数、类等程序含义时,在 if、while、for、def、class 等保留字所在完整语句后通过英文冒号「:」结尾并在之后进行缩进,表明后续代码与紧邻无缩进语句的所属关系

数字运算与类型

0x0X 十六进 如: 10 = 16

十进制不需要加任何东西

0o0O 八进制 如: 0o10 = 8

0b0B 二进制

可以使用三个函数来进行不同数字类型的转换:

bin 转换一个数字为 2 进制,如 bin(4) 结果为 0b100

oct 转换一个数字为 8 进制,如 oct(10) 结果为0o12

hex 转换一个数字为 16 进制,如 hex(15) 结果为0xf

四种不同的数据类型可以直接进行计算,如:0xf + 5 = 20

浮点数

浮点数有两种表示方法,十进制的一般表示与科学计数法表示。

浮点数必须带有小数点,小数点后可以为 0

只有十进制的数据才可以被表示为浮点数,除十进制数字以外,其他数字不能被表示为浮点数。

1.123456、1.274e10、1000.00、1.2734e-4 都为浮点数

浮点数的科学计数法用「e」、「E」作为幂的符号,以 10 为基数,含义如下

<a>e<b> = a*10b


符号描述
a + b
a - b
a * b
a / b
a % ba / b 之商的余数,也称为模运算、取余。
a ** ba 的 b次方
a // ba / b 只保留整数的商。也就是取整,不会进行四舍五入
-aa 的负值。等价于 -1*(a)
+aa 本身,即 1*(a)

函数

import 引用其他库,如 import turtle

print 用来打印输出 。

输出单个常量或字符串

print(“Hello World !”) 输出结果为 Hello World !

a=100

print(“a”) 输出结果为 a

print(a) 输出结果为 100

print(“中国”) 输出结果为 中国

输出多个字符串或常量

a,b,c=1,2,3

print(a,b,a,c) 输出结果为 1 2 1 3

混合输出字符串与变量值

a=18

b=20

print(“我今年 {} 岁,我的弟弟 {} 岁”.format(b,a)) 输出结果为 「我今年 20 岁,我的弟弟 18 岁」

print(“数字 {} 和数字 {} 的乘积是 {} 。”.format(a,b,a*b)) 输出结果为 数字 18 和数字 20 的乘积是 360 。

在输出结尾增加特定字符

a=18

print(a ,end=”岁”) 输出结果为 18岁

len 用来计算字符串长度, 如: len(“123456789”) 或 len(a)

if 用来判断是否成立,如 if a>5:

input 输入一个数据,如:input(“请输入一个数”) 通过 input 获取的数据都为 字符串,而不是数字

当 input 需要获取数字的时候可以使用 eval 来将字符串转换为数字。

如:evel(input(“请输入你的年龄”))

eval 能够以 python 表达式的方式解析并执行字符串,将返回结果输出。

如: type(eval(input(“请输入年龄”)))

<class ‘int’>

请注意,eval 函数想要输出已赋值的函数,必须加双引号「“”」,想要输出原字符串,必须加在双引号的基础上加单引号「’ ‘」

eval(a) 错误格式

eval(“”a””) 错误格式。

eval(‘’a’’) 错误格式。(两层单引号嵌套,python 允许使用单双引号混合嵌套,单不允许非混合嵌套,如 eval(“‘a’”)是被允许的。)

eval(“a”) 正确格式,输出 a 被赋的值。

eval(“‘a’”) 正确格式,输出字符串 a。

eval(‘a’) 正确格式,输出 a 被赋的值。

eval(‘“a”‘) 正确格式,输出字符串 a。

type 查看数据类型,如:type(a) str 为字符串,int 为整数,float 为浮点数

数字运算函数

abs 用来取绝对值,如 abs(a)

divmod 用来把函数把除数和余数运算结果结合起来,如运行 divmod(4,2) 返回结果为 (2,0)

pow 用来返回 x 的 y 次方的值。 如执行 pow(2,3) 返回结果为 8

此外,pow 还可以进行复合运算,如 pow(x, y[, z]), 此命令代表先计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z,

如执行 pow(2,3,3) 返回的结果为 2

round 用来四舍五入,如 rount(a),当 a=1.789时,round(a) 的结果是 2

此外,round 还可以指定保留几位小数,如 rount(a,2),指保留两位小数,当 a=1.789 时,round(a,2) 的结果为 1.79

max 用来确定某一组数里面谁为最大值,如 max(a,b,c,d,e,f,...n)

min 用来确定某一数组里面谁为最小值,如 min(a,b,c,d,e,f,...n)

int 用来取整,如:int(a), 取整时,不进行四舍五入,当 a=1.789时,int(a) 的结果是 1

字符处理

切片

用法:「字符串」[起点:终点:步长]

a[:2] 输出终点为 2 的数字,步长为 1 **当起点被省略时,起点值默认为 0。 **

a[1:] 从起点 1 开始的数字,步长为 1 当终点被省略时,默认输出所有从起点开始的字符

a[::-1] 输出全部字符,但倒着来遍历字符串。 当步长被省略时,默认步长为 1

1
2
3
4
#赋值且转换为字符串形式
>>> a=123456789
>>> a=str(a)
>>> type(a)

注意:切片只能处理字符串,并不能用来处理 int 格式的数字,故需要将数字先转换为字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> a[1:]
#得到结果为
'23456789'

>>> a[0:-1]
'12345678'

>>> a[-1]
'9'

#此为错误示范,左边的数字只能大于右边,否则输出空值。
>>> a[11:2]
''

>>> a[:1]
'1'

>>> a[::-1]
'987654321'

>>> a[::2]
'13579 '

format

格式控制

1
2
3
4
5
6
7
8
9
10
a="小菜"
b="的朋友"
>>>"我是{}的{}的兄弟。".format(a,b)
'我是小菜的的朋友的兄弟。'

>>>"我是{}的{}的兄弟。".format(a,b[1:])
'我是小菜的朋友的兄弟。'

>>>"我是{1}的{0}的兄弟。".format(a,b[1:])
'我是朋友的小菜的兄弟。'
:固定符号,必须包含引号。
<填充>用于填充单个字符
<左对齐
>右对齐
^居中对齐
<宽度>槽的设定输出宽度,若字符的宽度(长度)小于设定的宽度,则默认使用空格来填充。
,数字的千位分隔符,适用于整数与浮点数
.浮点数小数部分的精度或字符串的最大输出长度
<类型>整数类型,b,c,d,o,x,X 浮点数类型,e,E,f,%

<填充> <对齐类型> <宽度> 主要用于对显示格式的规范。

**类型中的字母代表的含义 **

b 二进制

c 转为数字对应的 ascii 码字符

d 十进制

o 八进制

x,X 十六进制

e,E 科学计数法

f 浮点数

% 百分数

在 format中,可以使用大括号来转义大括号

1
2
3
>>> print("{0}{{}}\n123123后面有个大括号".format("123123"))
123123{}
123123后面有个大括号

一些栗子

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
#居中并填充*
>>> a="需要居中的字符串"
>>> "{:*^20}".format(a)
'******需要居中的字符串******'

#左对齐
>>> "{:*<20}".format(a)
'需要居中的字符串************'

#右对齐
>>> "{:*>20}".format(a)
'************需要居中的字符串'

#当不指定输出结果的数字类型时,默认为科学计数法输出。
>>> "{:.2}".format(12345.678)
'1.2e+04'

#指定输出结果为浮点数。
>>> "{:.2f}".format(12345.678)
'12345.68'

#输出字符串的前四位
>>> "{:.4}".format("这是一个 ajdkalsjdlkasjdaksld")
'这是一个'

#转换二进制数字为十六进制数
>>> "{:x}".format(0b01010101010101)
'1555'

字符操作

操作符描述栗子
x + y连接两个字符串“asd” + “fgh” 结果为 “asdfgh”
x * n 或 n * x复制 n 次字符串 x“asd” * 2 结果为 “asdasd”
x in y如果 x 包含在 y 中返回 True,否则返回 Flase“as” in “asd” 结果为 True

考试题目

题目: 输入字符串 S,按要求把 S 输出到屏幕,格式要求:宽度为 30 个字符,星号字符 * 填充,居中对齐,如果输入字符超过 30 位,则全部输出。

例如:键盘输入字符串 S 为 “SSS” ,屏幕输出”******SSS*******“

代码:

1
2
S = input("请输入一个字符串:")
print("{:*^30}".format(s))

解释:

使用 format 来输出 S,传递 {:*^30}format:代表后面带填充的字符,只能是一个字符,不指定默认为空格填充

^<``> 分别是居中、左对齐、右对齐。

30 为位数