Chapter 3
3.2 常见的Python函数
函数是完成一个特殊任务的一组语句。Python有内置函数,使用内置函数不用导入任何模块。
简单的Python内置函数
函数 | 描述 |
---|---|
abs(x) | 返回x的绝对值 |
max(x1, x2, ...) | 返回x1,x2,…的最大值 |
min(x2, x2, ...) | 返回x2,x2,…的最小值 |
pow(a, b) | 返回a^b^的值,类似a ** b |
round(x) | 返回与x最接近的整数,如果x与两个整数接近程度相同,则返回偶数值。例如,round(5.4) = 5,round(5.5) = 6, round(4.5) = 4 |
round(x, n) | 保留小数点后n位小数的浮点值 |
Python数学模块中的数学函数(需要导入math模块):
函数 | 描述 |
---|---|
fabs(x) | 将x看作一个浮点数 |
ceil(x) | x向上取最近的整数,然后返回这个整数 |
floor(x) | x向下取最近的整数,然后返回这个整数 |
exp(x) | 返回幂函数e^x^的值 |
log(x) | 返回x的自然对数值 |
log(x, base) | 返回以某个特殊值为底的x的对数值 |
sqrt(x) | 返回x的平方根值 |
sin(x) | 返回x的正弦值,x是角度的弧度值 |
asin(x) | 返回x的反正弦值(返回值是弧度值),x是正弦值 |
cos(x) | 返回x的余弦值,x是角度的弧度值 |
acos(x) | 返回x的反余弦值(返回值是弧度值),x是余弦值 |
tan(x) | 返回x的正切值,x是角度的弧度值 |
degrees(x) | 弧度值x转换为角度值 |
radians(x) | 角度值x转换为弧度值 |
数学常量 | 描述 |
---|---|
math.pi | π |
math.e | e |
使用Python数学模块,需要在程序第一行导入:
import math
即使导入了math包,在代码中,数学模块中的函数前也必须显式说明math.function(),不能省略math.。此与C++和Java不同。
3.3 字符和字符串
Python处理字符和字符串的方式是一样的。字符串必须被括在一对单引号(''
)或者双引号(""
)里。==Python没有字符数据类型==。一个字符的字符串代表一个字符。不同于C++。习惯上,使用双引号括住多个字符构成字符串,使用单引号括住单个或空字符构成单个字符。(仅为习惯,不是语法规则)
3.3.1 ASCII码
任何小写字母的ASCII码与它对应的大写字母的ASCII码的差值都是32。
3.3.2 Unicode码
Unicode码以\u开始,后面紧跟四个十六进制数字。从\u0000到\uFFFF
3.3.3 函数ord和chr
ord(char)
返回char的ASCII码;chr(ASCII)
返回该ASCII码对应的字符。
3.3.4 转义字符序列
由\
和其后紧接着的字母或数字组合构成的特殊符号称为转义字符序列。转义字符序列仅代表一个字符!
转义字符序列 | 名称 | 数值 |
---|---|---|
\b | 退格符 | 8 |
\t | 制表符 | 9 |
\n | 换行符 | 10 |
\f | 换页符 | 12 |
\r | 回车符 | 13 |
\\ | 反斜线 | 92 |
\' | 单引号 | 39 |
\" | 双引号 | 34 |
3.3.5 不换行打印
使用print()
函数时,它会自动打印一个换行符。若不想让它自动换行,可使用下列代码:
print(item, end = "anyendingstring")
end=anyendingstring
说明print函数的输出可以以任何字符或字符串结尾,当anyendingstring
为空(''
)时,即为仅输出item
且不自动换行。print(item)
等价于print(item, end = '\n')
。
3.3.6 函数str
str()
函数可以将一个数字转换成一个字符串。
3.3.7 字符串连接操作
运算符+
可以对两个数字做加法,也可以用来连接两个字符串。”string1” + “string2” + “string3”。(运算符重载)
message = "Welcome " + "to " + "Python"
print(message)
输出:
Welcome to Python
运算符+=
也能用来连接字符串。
message = "Welcome to Python"
message += " and Python is fun"
print(message)
输出:
Welcome to Python and Python is fun
3.3.8 从控制台读取字符串
为了从控制台读取一个字符串,可以使用input()
函数。
3.4 实例研究:数量最小的硬币
3.5 对象和方法简介
在Python中,所有的数据(包括数字和字符串)实际都是对象。同一类型的对象都有相同的类型。可已使用id()
函数和type()
函数来获取关于对象的一些信息。
当执行程序的时候,Python会自动为对象的id赋一个独特的整数。在程序的执行过程中,对象的id不会改变。然而,每当执行程序时,Python都可能会赋一个不同的id。Python按照对象的值决定对象的类型。
在Python中,一个对象的类型由类决定。类(class)和类型(type)是一样的意思。变量实际上是一个对象的引用。n = 3
是将3赋值给了n,实际上是将3赋值给了一个int对象,这个对象是由变量n引用的。
注意,此处于C有重大区别。Python在执行n=3
语句时,先根据值3在内存中生成了一个整型对象,同时,赋予该对象一个id。之后,将变量n指向该id。如果此时继续执行n=4
语句,则根据值4,在内存中另外开辟一块空间,生成另一个整型对象,同时,赋予该对象一个新id。之后,让变量n指向此新id,==不再继续指向存储值3的内存位置了==。
你可以在一个对象上执行操作。操作是用函数定义的。Python中对象所用的函数被称为方法。方法只能从一个特定的对象里调用。一个对象调用方法的语法就是object.method()
。对于字符串类型的对象可调用的常用方法有:返回小写字符串lower(),返回大写字符串upper(),移除字符串两端空白strip()。空白包含:''
,\t
,\f
,\r
,\n
。
3.6 格式化数字和字符串
可以使用函数format(item, format-specifier)
返回格式化的字符串。item是数字或者字符串,而format-specifier指定条目item的格式。此函数返回一个字符串。
3.6.1 格式化浮点数
如果条目item是一个浮点值,可以用标识符以“width.*precision*f”的形式给出格式的宽度和精确度。宽度width指定得到的字符串的宽度,精确度precision指定小数点后数字的个数,转换码f为浮点数设定格式。
例如:
print(format(57.4, "10.2f"))
显示:
·····57.47
·····代表五个空格。10表示总体输出宽度是10个字符宽度(含小数点的1个字符宽度),2表示小数点后保留两位(四舍五入)。这样,输出结果为在小数点前有7字符宽度,小数点占1字符宽度,小数点后有2字符宽度。如果在小数点前的数字个数小于7个,则在数字前插入相应数量的空格;如果小数点前的数字个数大于7个,则数字的宽度将会==自动增加==。可以省略宽度width(这样,width默认为0),宽度就会根据格式化这个数所需的宽度==自动设置==。
3.6.2 用科学记数法格式化
将转换码f变成e,数字将被格式化为科学记数法。科学记数法的例如:
print(format(57.467657, "10.2e"))
显示:
··5.75e+01
··代表两个空格。注意,科学计数法在e后默认有+/-号,其后用两位数表示幂,所以,e,+,0各占一个字符宽度。
3.6.3 格式化成百分数
可以使用转换码%将一个数字格式化为百分数。例如:
print(format(0.53457, "10.2%"))
显示:
····53.46%
%占一个字符宽度。
3.6.4 调整格式
在默认情况下,一个数的格式是右对齐的。可以将符号“<”放在格式说明符里指定得到的字符串是以指定的宽度左对齐的。(相对的,右对齐符号是“>”)对齐符号必须放在格式说明符最左侧。例如:
print(format(57.467657, "10.2f"))
print(format(57.467657, "<10.2f"))
显示
·····57.47
57.47·····
·····代表五个字符宽度。
3.6.5 格式化整数
转换码 | 含义 |
---|---|
d | 十进制整数 |
x | 十六进制整数 |
o | 八进制整数 |
b | 二进制整数 |
3.6.6 格式化字符串
可以用转换码s将一个字符串格式化为一个指定宽度的字符串。例如:
print(format("Welcome to Python", "20s"))
显示:
Welcome to Python···
格式说明符20s指定字符串被格式化为二十个字符宽度以内的字符串。默认情况下,字符串是左对齐的。在格式符里加入“>”符号可将字符串右对齐。如果字符串比指定的宽度长,宽度将自动增加到字符串的宽度。
3.7 绘制各种图形
当创建一个Turtle对象时,他的位置被设定在 (0,0) 处——窗口的中心,而且它的方向被设置为向右。
Turtle笔的绘图状态的方法
方法 | 描述 |
---|---|
turtle.pendown() | 将笔向下拉——移动的时候绘制 |
turtle.penup() | 将笔向上拉——移动的时候不绘制 |
turtle.pensize(width) | 将线的粗细设定为指定宽度 |
Turtle运动的方法
方法 | 描述 |
---|---|
turtle.forward(d) | 将Turtle朝着Turtle指定的方向向前移动指定距离 |
turtle.backward(d) | 将Turtle朝着Turtle指定的反方向向后移动指定距离,Turtle的方向不改变 |
turtle.right(angle) | 将Turtle向右转动指定角度 |
turtle.left(angle) | 将Turtle向左转动指定角度 |
turtle.goto(x,y) | 将Turtle移动到一个绝对位置 |
turtle.setx(x) | 将Turtle的x坐标移动到指定位置 |
turtle.sety(y) | 将Turtle的y坐标移动到指定位置 |
turtle.setheading(angle) | 将Turtle的方向设定为制定角度。 |
turtle.home() | 将Turtle移动到起点 (0,0) 和向东 |
turtle.circle(r,ext,step) | 绘制一个指定半径、范围和阶数的圆。其中,r是必要参数,ext和step是可选参数 |
turtle.dot(diameter,color) | 绘制一个指定直径和颜色的圆 |
turtle.undo() | 取消(反复)最后一个图操作 |
turtle.speed(s) | 设置Turtle的速度为一个在1到10之间的整数,10最大 |
3.8 绘制带颜色和字体的图形
Turtle笔的颜色、填充和绘制方法
方法 | 描述 |
---|---|
turtle.color(c) | 设置笔的颜色 |
turtle.fillcolor(c) | 设置笔填充颜色 |
turtle.begin_fill() | 在填充图形前,访问这个方法 |
turtle.end_fill() | 在最后调用begin_fill之前填充绘制的图形 |
turtle.filling() | 返回填充状态:True代表填充,False代表没有填充 |
turtle.clear() | 清除窗口,turtle的状态和位置不受影响 |
turtle.reset() | 清除窗口,将状态和位置复位为初始默认值 |
turtle.screensize(w,h) | 设置画布的宽度和高度 |
turtle.hideturtle() | 隐藏turtle |
turtle.showturtle() | 显示turtle |
turtle.isvisible() | 如果turtle可见,返回True |
turtle.write(s,font=("Arial", 8, "normal")) | 在turtle位置编写字符串s,字体是由字体名、字体大小和字体类型三部分组成1 |
- 在
turtle.penup()
状态下,turtle.write(s,font=("Arial", 8, "normal"))
仍然可以使用。 ↩