Python基本语法元素

程序格式框架

缩进

Python语言采用严格的“缩进”来表示程序逻辑。缩进指每行语句开始前的空白区域,用来表示Python程序间的包含和层次关系。

1个缩进 = 4个空格

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

代码编写中,缩进可以用Tab键实现,也可以用多个空格实现(一般是4个空格),但两者不混用。

注释

注释是代码中的辅助性文字,会被编译器或解释器略去,不被计算机执行,一般用于程序员对代码的说明。

Python语言采用#表示一行注释的开始,多行注释需要在每行开始都使用

注释可以在一行中任意位置通过#开始,其后面的本行内容被当作注释,而之前的内容仍然是 Python执行程序的一部分

注:‘’‘ Hello World‘‘’,这种前后三个单引号的,也是注释

续行符

Python程序是逐行编写的,每行代码长度并无限制,但从程序员角度,单行代码太长并不利于阅读,因此, Python提供“续行符”将单行代码分割为多行表达。续行符由反斜杠 \ 符号表达。

1
2
3
4
5
6
7
print("{}{}{}".format(\
"我",\
"爱",\
"你"\
))
#上面的代码和下面的代码是一样的
print("{}{}{}".format("我","爱","你"))

语法元素

变量

变量是保存和表示数据值的一种语法元素,在程序中十分常见。

顾名思义,变量的值是可以改变的,能够通过赋值(使用等号“=”表达)方式被修改

在Python中,变量可以随时命名、随时赋值、随时使用

如:

1
2
3
a = 999
a = a+1
print(a)

命名

给变量或其他程序元素关联名称或标识符的过程称为命名。

Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但名字的首字符不能是数字,标识符中间不能出现空格,长度没有限制。以下是合法命名的标识符

注:命名时请注意大小写

保留字

保留字( keyword),也称关键字,指被编程语言内部定义并保留使用的标识符。

程序员编写程序不能命名与保留字相同的标识符。每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。

注:Python的保留字对大小写敏感,比如True是保留字,但是true不是

数据类型

Python语言支持多种数据类型,最简单的包括数字类型、字符串类型,略微复杂的包括元组类型、集合类型、列表类型、字典类型等。

数字类型

表示数字或数值的数据类型称为数字类型, Python语言提供3种数字类型:整数、浮点数和复数,分别对应数学中的整数、实数和复数。

整数类型

整数类型与数学中的整数相一致,没有取值范围限制,可正可负。

一个整数值可以表示为十进制、十六进制、八进制和二进制等不同进制形式。

**例如:**整数1010,其各种进制的数据分别如下

十进制:1010

十六进制:0x3F2

八进制:0o1762

二进制:0b01111110010

浮点数类型

浮点数类型与数学中的小数相一致,基本没有取值范围,可正可负。

一个浮点数可以表示为带有小数点的一般形式,也可以采用科学计数法表示。

浮点数只有十进制形式。

例如:

浮点数123.456,两种表示方式如下

一般形式:123.456

科学计数法:1.23456e2

复数类型

复数类型与数学中的复数相一致,采用a+bj的形式表示,存在实部和虚部。

字符串类型

计算机程序经常用于处理文本信息,文本信息在程序中使用字符串类型来表示。

字符串是字符的序列,在 Python语言中采用一对双引号””或者付单引号括起来的一个或多个字符来表示。其中,双引号和单引号作用相同

序号体系

作为字符序列,字符串可以对其中单个字符或字符片段进行索引。

字符串包括两种序号体系:正向递增序号和反向递减序号

1
2
3
4
print("Hello World"[1])		#e
print("Hello World"[9]) #l
print("Hello World"[-1]) #d
print("Hello World"[-3]) #r

也可以采用[N:M]格式获取字符串的子串,这个操作被形象地称为切片

[N:M]获取字符串中从N到M(但不包含M)间连续的子字符串,其中,N和M为字符串的索引序号,可以混合使用

1
2
print("Hello World"[2:4])	#ll
print("Hello World"[7:-2]) #or

Python默认提供的len()函数获取字符串的长度,一个中文字符和一个西文字符的长度都记为1。

1
print(len("Hello World"))	#11

程序的语句元素

表达式

产生或计算新数据值的代码片段称为表达式。

表达式一般由数据和操作符构成。

1
1024*32

赋值语句

对变量进行赋值的一行代码被称为赋值语句。

在 Python语言中,“=”表示“赋值”,即将号右侧的表达式计算后的结果值赋给左侧变量。

赋值语句的一般形式:

<变量>=<表达式>

1
a = 1024*32

还有一种同步赋值语句,同时给多个变量赋值

基本格式如下:<变量1>,…,<变量N>=<表达式1>,…,<表达式N>

同步赋值会同时运算等号右侧的所有表达式,并一次性且同时将右侧表达式结果分别赋值给左侧的对应变量。

1
2
a = 1
x,y = a+1,a+2

同步赋值的另一个应用是互换变量的值

1
x,y = y,x

如果不使用同步赋值,那就交换变量时就需要借助临时变量

1
2
3
t = x
x = y
y = t

引用

Python程序会经常使用当前程序之外已有的功能代码,这个方法叫引用。

Python语言使用 import保留字引用当前程序以外的功能库

在前面一章的Python实例中,我们有引用过功能库turtle(海龟),用于画五角星和七彩圆圈

1
import turtle		#引用turtle库

turtle库的一些函数

向前移动

turtle.forward()

turtle.fd()

向后移动

turtle.back()

turtle.bk()

turtle.backward()

向右转(默认单位为度)

turtle.right()

turtle.rt()

向左转

turtle.left()

turtle.lt()

设置填充颜色

turtle.fillcolor()

颜色填充

turtle.begin_fill()  在绘制要填充的形状前调用

turtle.end_fill()  填充上次调用begin_fill()之后绘制的形状

画一个圆

turtle.circle(radius, extent, steps)

  radius – 半径(数字)

  extent – 范围(数字或None)

  steps – 步骤(整数或None)

启动事件循环,即等待下一步指令

turtle.mainloop()

turtle.done()

我们还可以新建一个Python文件,在另一个文件中引用它

新建a.py,编写代码

1
2
def test():  #声明函数
print("111")

新建b.py,引用a.py中的test函数

1
2
import a
a.test()

分支语句

分支语句是控制程序运行的一种语句,它的作用是根据判断条件选择程序执行路径。

分支语句包括单分支、二分支和多分支。

1
2
3
4
if<条件>:
<语句块1>
else:
<语句块2>

当条件为True时,执行语句块1;当条件为 False时,执行语句块2。其中,if、else都是保留字。

分支语句中,if、else所在行以冒号:结尾,后续不同分支路径内语句要有缩进。

1
2
3
4
5
num = eval(input("输入一个数字:"))
if num > 100:
print("输入的数大于100")
else:
print("输入的内容小于等于100")

循环语句

循环语句是控制程序运行的一类重要语句,与分支语句控制程序执行类似,它的作用是根据判断条件确定一段程序是否再执行一次或者多次。

循环语句包括遍历循环和条件循环。

1
2
3
4
5
while(<条件>):

<语句块1>

<语句块2>

当条件为True(真)时,执行语句块1,然后再次判断条件,当条件为 False(假)时,退出循环执行语句块2。

循环语句中, while所在行以冒号:结尾,后续循环体中代码要有缩进

1
2
3
4
n = 3
while n<100:
print(n,end=" ")
n += 3

基本输入输出函数

Python语言有3个重要的基本输入、输出函数,用于输入、转换和输出,分别是 input()eval()print()

input()函数

input函数从控制台获得用户的一行输入,无论用户输入什么内容, input()函数都以字符串类型返回结果。

<变量>= input(<提示性文字>)

需要注意,无论用户输入的是字符或是数字, input()函数统一按照字符串类型输入

1
2
3
4
a = input("请输入:")
print(a)
#type()为查看它的类型
print(type(a)) # str 字符串类型

eval()函数

eval(a)函数将去掉字符串a最外侧的引号,并按照 Python语句方式执行去掉引号后的字符内容

1
2
a = eval("1.1")  #1.1
b = eval("1.1 + 1.1") #2.2

eval函数去掉了字符串“1.1”最外侧引号,将结果赋值给a,a表示一个浮点数1.1。

eval函数去掉了字符串”1.1+1.1”最外侧引号,对其内容当作 Python语句进行运算,运算结果为2.2,保存到变量b中。

那么如果eval函数中写入英文字符呢

1
2
a = eval("abc") 
print(a)

会报错显示它没有被定义

当eval函数处理字符串abc时,字符串去掉两个引号后, Python语句将其解释为一个变量,由于之前没有定义过变量abc,因此解释器报错。

所以我们可以定义变量

1
2
3
abc = 1
a = eval("abc")
print(a) #1

也可以把abc加上单引号变为字符串

1
2
a = eval("'abc'") 
print(a) #abc

eval函数经常和input函数一起使用,用来获取用户输入的数字

<变量>=eval(input(<提示性文字>))

1
2
3
a = eval(input("请输入:"))
print(a)
print(type(a)) #int

print()函数用于输出运算结果。有三种用法

第一种,仅用于输出字符串或单个变量

1
2
print("Hello")	#Hello
print(10.01) #10.01

不过在输出字符串表示时,字符串会变成统一的单引号形式

1
print(["a","b"])	#['a','b']

第二种,仅用于输出一个或多个变量

print(<变量1>,<变量2>,…,<变量n>)

输出后,各个变量值用空格分隔

1
2
a = 123.456
print(a,a,a) #123.456 123.456 123.456

第三种,用于混合输出字符串与变量值

print(<输出字符串模板>format(<变量1>,<变量2>,…,<变量n>))

其中,输出字符串模板采用{}表示一个槽位,每个槽位对应format()的一个变量

1
2
a,b = 3,5
print("{}和{}相加为{}".format(a,b,a+b)) #3和5相加为8

print函数输出文本时默认会在最后增加一个换行,如果不希望在最后增加这个换行或者输出文本后增加其他内容,可以对print函数的end参数进行赋值

print(<待输出内容>,end=”<增加的输出结尾>”)

1
2
a = 123
print(a,end=".") #123.

Python实例

倒背如流

输入一段文本,倒着输出出来

1
2
3
4
5
str1 = input("请输入一段文本:") 
i = len(str1) - 1 #最后一个元素的下标
while i>=0:
print(str1[i],end="")
i-=1

高级切片法

1
2
str1 = input("请输入一段文本:") 
print(str1[::-1])

扩展:

[1:]–获取从位置1开始后面的字符(默认首位是0)

[:-1]–删除位置为-1的字符(也就是获取从位置0带位置-1之间的字符)

[-1:]–获取位置-1的字符

[::-1]–从最后一个元素到第一个元素复制一遍。(也就是倒序)

[:]–相当于完整复制一份str