Python语言基本语法元素
考纲考点
程序的基本语法元素:程序的格式框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、引用
程序的格式框架
缩进
Python语言采用严格的“缩进”来表明程序的格式框架。缩进指每行代码
开始前的空白区域,用来耘示代码之间的包含和层欠关系。
1个缩进 = 4个空格
缩进是 Python语言中表明程序框架的唯一手段
当表达分支、循环暾数类等程序含义时,在讦、 while、for、def、 class等保留字所在完整语句后通过英文冒号(:)结尾并在之后进行缩进,表明后续代码与紧邻无縮进语句的所属关系
注释
Python语言采用#表示一行注释的开始,多行注释需要在每行开始都使用#。
Python程序中的非注释语句将按顺序执行注释语句将被解释器过滮掉,不被执行。注释般用于在代码中标明作者和版权信息,或解释代码原理及用途,或通过注释单行代码辅助程序调试。
语法元素的名称
变量
变量是保存和表示数据值的一种语法元素在程序中十分常见。顾名思义
变量的值是可以改变的,能够通过赋值(使用等号=表达)方式被修改,例如:
a=99
print(a)
100
- 1
- 2
- 3
命名
Python语言允许采用大写字母、小写字母、数字、下划线O和汉字等字符及其组合给变量命名,但名字的首字符不能是数字,中间不能出现空格,长度没有限制,保留字不能作为变量。
注意:标识符对大小写敏感, python和 Python是两个不同的名字
保留字
保留字,也称为关键字,指被编程语言內部定义并保留使用的标识符。
程序员编写程序不能定义与保留字相同的标识符。
每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。
掌握一门编程语言首先要熟记其所对应的保留字。
保留字列表
保留字 | 说明 |
---|---|
and | 用于表达式运算、逻辑与操作 |
as | 用于类型转换 |
assert | 断言,用于判断变量或条件表达式的值是否为真 |
break | 中断循环语句的执行 |
class | 用于定义类 |
continue | 继续执行下一次循环 |
def | 用于定义函数或方法 |
del | 删除变量或序列的值 |
elif | 条件语句与if、else结合使用 |
else | 条件语句,与if、elif结合使用。也可以用于异常和循环语句 |
except | 包含捕获异常后的操作代码块,与try,finally结合使用 |
exec | 用于执行Python语句 |
for | for循环语句 |
finally | 用于异常语句,出现异常后仍继续执行finally包含的语句块。与try、except结合使用 |
form | 用于引入模块,与import结合使用 |
global | 定义全局变量 |
if | 条件语句,与else,elif结合使用 |
import | 用于导入模块,与form结合使用 |
in | 判断变量是否在序列中 |
is | 判断变量是否为某个类的实例 |
lambda | 定义匿名函数 |
not | 用于表达式运算,逻辑非操作 |
or | 用于表达式运算,逻辑或操作 |
pass | 空的类,方法或函数的占位符 |
打印语句 | |
raise | 异常抛出操作 |
return | 用于函数返回计算结果 |
try | try包含可能会出现异常的语句,与expect,finally结合使用 |
while | 循环语句 |
with | 简化Python语句 |
yield | 用于从函数依次返回值 |
数据类型
数据类型概述
Python语言支持多种数据类型,最简单的包括数字类型、字符串类型、略微复杂的包括元组类型、复合类型、列表类型、字典类型等。
数字类型
表示数字或数值的数据类型称为数字类型,
Python语言提供3种数字类型:整数、浮点数和复数,分别对应数学中的整数、实数和复数。
一个整数值可以表示为十进制、十六进制、八进制和二进制等不同进制形式
十进制:1010
十六进制:0x3F2
八进制:0o1762
二进制:0b00111110010
一个浮点数可以表示为带有小数点的一般形式,也可以采用科学计数法表示。例如:浮点数123.456,两种表示方式如下:
一般形式:123.456
科学计数法:123456e2
复数类型与数学中的复数相—致,采用a+bj的形式表示,存在实部和虚部。
字符串
Python语言中,字符串是用两个双引号“"或者单引号′′括起来的
一个或多个字符。
Python字符串的两种序号体系
正向递增序号
如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为
“对酒当歌人生几何?”[1]
酒
“对酒当歌人生几何?”[-1]
?
可以采用[N:M]格式获取字符串的子串,这个操作被形象地称为切片。[N:M]获取字符串中从N到M(但不包含M)间连续的子字符串。
“譬如朝露,去日苦多。”[2:4]
朝露
“譬如朝露,去日苦多。”[5:2]
去日苦
可以通过 Python默认提供的len0函数获取字符串的长度,一个中文字
符和西文字符的长度都记为1。
len(“譬如朝露,去日苦多。”)
10
len hello World")
11
程序的语句元素
表达式
产生或计算新数据值的代码片段称为表达式。表达式类似数学中的计算公式,以表达单一功能为目的,运算后产生运算结果,运算结果的类型由操作符或运算符决定。
表达式一般由数据和操作符等构成,这是构成 Python语句的重要部分。
赋值语句
Python语言中,=表示“赋值”,即将等号右侧的值计算后将结果值赋给左侧变量,包含等号(=)的语句称为“赋值语句“
<变量> = <表达式>
同步赋值语句:同时给多个变量赋值
<变量1>,…<变量N>=<表达式1>,…,<表达式N>
例:将变量X和y交换
采用单个赋值,需要3行语句:
即通过一个临时变量t缓存ⅹ的原始值,然后将y值赋给ⅹ,再将ⅹ的原始值通过t赋值给y。
引用
Python程序会经常使用当前程序之外已有的功能代码,这个过程叫“引用"。 Python语言使用
import保留字引用当前程序以外的功能库,使用方式如下
Import<功能库名称>
引用功能库之后,采用<功能库名称>.<函数名称>()方式调用具体功能。
其他语句
除了赋值语句外, Python程序还包括一些其他的语句类型,例如,分支语句和循环语句等。更多的分支和循环内容将在第4章介绍。这里仅简要介绍这两类语句的基本使用。
分支语句
分支语句是控制程序运行的一种语句,它的作用是根据判断条件选择程序执行路径。分支语句包括:单分支、二分支和多分支。
单分支语句是最简单的分支语句,使用方式如下:
"""
if<条件>:
<语句块>
"""
#判断输入整数是否在D,100]之间
num=eval( input("请输入一个整数:")
if 0<=num<=100: #判断[0,100]
print("输入整数在0到100之间(含)")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
循环语句
循环语句是控制程序运行的一类重要语句,与分支语句控制程序执行类似,它的作用是根据判断条件确定一段程序是否再次执行一次或者多次。循环语句包括遍历循环和条件循环
"""
while(<条件>):
<语句块1>
<语句块2>
"""
# 输出10到100步长为3的全部整数
n = 10
while n < 100:
print(n, end=" ")
n = n + 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
基本输入输出函数
input()函数
eval()函数
print()函数
print()函数用于输出运算结果,根据输出内容不同,有三种用法。
实例解析
计算机程序是机械记忆的高手,下面将编写一段程序,获得用户输入,采用倒序的方式将输入内容输出出来。示例:
输入:To be or not to be,that’s a question.——莎士比亚
输出:亚比士莎——.noitseuq a s’taht,eb ot ton ro eb oT
以下给出了一种实现,采用正向递增序号,利用len()函数将i设为最后一个字符的索引序号,然后逐次输出至第一个字符。
s = input("请输入一段文本:")
i = len(s) - 1
while i >= 0:
print(s[i],end="")
i = i - 1
- 1
- 2
- 3
- 4
- 5
给出另一种实现,采用反向递减序号,将i首先设置为-1,直接索引最后一个字符,然后逐次输出至第一个字符。
s = input("请输入一段文本:")
i = -1
while i >= -1*len(s):
print(s[i],end(""))
i = i - 1
- 1
- 2
- 3
- 4
- 5
# 获取用户输入的一段文字,将这段文字进行垂直输出
s = input("请输入一段文本:")
i = -1 * len(s)
while i <= -1:
print(s[i])
i = i + 1
# 获取用户输入的一个实数,并提取小数部分
a = eval(input("请输入实数:"))
b = int(a)
c = a - b
print("{}".format(round(c,s)))
# 时针代码
import turtle
import datetime
"""抬起画笔,向前运动一段距离后放下"""
def Skip(distance):
turtle.penup()
turtle.forward(distance)
turtle.pendown()
def mkHand(name, length):
# 注册Turtle形状,建立表针Turtle
turtle.reset()
Skip(-length * 0.1)
# 开始记录多边形的顶点。当前乌龟位置是多边形的第一个顶点。
turtle.begin_poly()
turtle.forward(length * 1.1)
# 停止记录多边形的顶点。当前乌龟位置是多边形的最后一个顶点,将与第一个顶点相连。
turtle.end_poly()
# 返回最后记录的多边形。
handForm = turtle.get_poly()
turtle.register_shape(name, handForm)
def Init():
global secHand, minHand, hurHand, printer
# 重置Turtle指向北
turtle.mode("logo")
# 建立三个表针Turtle并初始化
mkHand("secHand", 135)
mkHand("minHand", 125)
mkHand("hurHand", 90)
secHand = turtle.Turtle()
secHand.shape("secHand")
minHand = turtle.Turtle()
minHand.shape("minHand")
hurHand = turtle.Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
# 建立输出文字 Turtle
printer = turtle.Turtle
# 隐藏画笔的 turtle形状
turtle.hideturtle()
turtle.penup()
def SetupClock(radius):
# 建立表的外框
turtle.reset()
for i in range(60):
Skip(radius)
if i % 5 == 0:
turtle.pensize(7)
turtle.forward(20)
# Skip(-radius - 20)
# Skip(radius + 20)
if i == 0:
turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
elif i == 25 or i == 30 or i == 35:
Skip(25)
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-25)
else:
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-radius - 20)
else:
turtle.pensize(1)
turtle.dot(5)
Skip(-radius)
turtle.right(6)
def Week(t):
week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()]
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d)
def Tick():
# 绘制表针动态显示
t = datetime.datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60
hour = t.hour + minute / 60
secHand.setheading(6 * second)
minHand.setheading(6 * minute)
hurHand.setheading(30 * hour)
turtle.tracer(False)
turtle.forward(65)
turtle.write(Week(t), align="center", font=("Courier", 14, "bold"))
turtle.back(130)
turtle.write(Date(t), align="center", font=("Courier", 14, "bold"))
turtle.home()
turtle.tracer(True)
# 100ms后继续调用tick
turtle.ontimer(Tick, 100)
def main():
# 打开/关闭龟动画,并继续更新图纸设置延迟。
turtle.tracer(False)
Init()
SetupClock(160)
turtle.tracer(True)
Tick()
turtle.mainloop()
if __name__ == "__main__":
main()
- 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
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135