小小千想和您聊一聊

当前位置: 首页> 技术分享> 第2章 编程基础

第2章 编程基础

  本章学习目标

  l 掌握Python基本语法

  l 掌握变量与数据类型

  l 掌握运算符

  在日常生活中,想要盖一栋房子,那么首先需要知道盖房都需要哪些材料,以及如何将它们组合使用。同样的,所谓万丈高楼平地起,要使用Python开发出一款软件,就必须充分掌握Python的基础知识。

  2.1 基本语法

  2.1.1 注释

  注释即对程序代码的解释,在写程序时需适当使用注释,以方便自己和他人理解程序各部分的作用。在执行时,它会被Python解释器忽略,因此不会影响程序的执行。Python支持单行注释与多行注释,具体如下所示。

  1. 单行注释

  该注释是以“#”开始,到该行末尾结束,具体示例如下:

  # 输出千锋教育

  print("千锋教育")

  2. 多行注释

  该注释以三个引号作为开始和结束符号,其中三个引号可以是三个单引号或三个双引号,具体示例如下:

  '''

  多行注释

  输出千锋教育

  '''

  """

  多行注释

  输出千锋教育

  """

  print("千锋教育")

  2.1.2 标识符与关键字

  现实世界中每种事物都有自己的名称,从而与其他事物区分开。例如,生活中每种交通工具都有一个用来标识的名称,如图2.1所示。

  图2.1 生活中的标识符

  在Python语言中,同样也需要对程序中各个元素命名加以区分,这种用来标识变量、函数、类等元素的符号称为标识符。

  Python语言规定,标识符由字母、数字和下画线组成,并且只能以字母或下画线开头的字符集合。在使用标识符时应注意以下几点:

  l 命名时应遵循见名知义的原则。

  l 系统已用的关键字不得用作标识符。

  l 下画线对解释器有特殊的意义,建议避免使用下画线开头的标识符。

  l 标识符是区分大小写的。

  关键字是系统已经定义过的标识符,它在程序中已有了特定的含义,如if、class等,因此不能再使用关键字作为其他名称的标识符,表2.1列出了Python中常用的关键字。

  表2.1 常用的关键字

  Python的标准库提供了一个keyword模块,可以输出当前Python版本的所有关键字,具体示例如下:


 >>> import keyword
  >>> keyword.kwlist
  ['False', 'None', 'True', 'and', 'as', 'assert', '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']


  2.1.3 语句换行

  Python中一般是一条语句占用一行,但有时一条语句太长,就需要换行,具体示例如下:


 print("千锋教育隶属于北京千锋互联科技有限公司,\
  一直秉承用良心做教育的理念,致力于打造IT教育全产业链人才服务平台。")
  print(["千锋教育", "扣丁学堂",
  "好程序员特训营"])


  运行结果如图2.2所示。

  图2.2 运行结果

  示例中,第1行print()中字符串太长,分开两行编写,在末尾添加续行符”\”来实现,但在 []、{}中分行时,可以不使用反斜杠,如示例中的第3、4行。

  2.1.4 缩进

  Python语言简洁体现在使用缩进来表示代码块,而不像C++或Java中使用{},具体示例如下:


 if True:
  print("如果为真,输出:")
  print("True")
  else:
  print("否则,输出:")
  print("False")


  示例中,if后的条件为真,执行第2、3行,它们使用相同的缩进来表示一个代码块。此处需注意,缩进的空格数是可变的,但同一个代码块中的语句必须包含相同的缩进空格,具体示例如下:


 if True:
  print("如果为真,输出:")
  print("True")
  else:
  print("否则,输出:")
  print("False") # 缩进不一致,引发错误


  示例中,第5行与第6行缩进不一致,会引发错误。

  运行结果如图2.3所示。

  图2.3 缩进不一致引发错误

  在Pycharm中,缩进是自动添加的。在其他文本编辑器中使用缩进,推荐大家使用4个空格宽度作为缩进,尽量不要使用制表符作为缩进,因为不同的文本编辑器中制表符代表的空白宽度可能不相同。

  2.2.1 检测数据类型

  在Python中,数据类型是由存储的数据决定的。为了检测变量所引用的数据是否符合期望的数据类型,Python中内置了检测数据类型的函数type()。它可以对不同类型的数据进行检测,具体如下所示:


 a = 10
  print(type(a)) #
  b = 1.0
  print(type(b)) #
  c = 1.0 + 1j
  print(type(c)) #


  示例中,使用type()函数分别检测a、b、c所引用数据的类型。

  除此之外,还可以使用函数isinstance()判断数据是否属于某个类型,具体示例如下:


 a = 10
  print(isinstance(a, int)) # 输出True
  print(isinstance(a, float)) # 输出False


  2.2.2 数据类型转换

  数据类型转换是指数据从一种类型转换为另一种类型,转换时,只需要将数据类型名作为函数名即可,如表2.2所示。

  表2.2 数据类型转换函数

  表2.2中列出的是数字类型之间的转换,其他类型之间也可以转换,如数字类型转换为字符串型,这些知识将在后面章节中讲解。

  接下来演示数字类型之间转换,如例2-1所示。

  例2-1


 1 a = 2.0
  2 print(type(a))
  3 print(int(a)) # 将浮点型转为整型
  4 print(type(int(a)))
  5 b = 2
  6 print(type(b))
  7 print(float(b)) # 将整型型转为浮点型
  8 print(type(float(b)))
  9 c = complex(2.3, 1.2) # 创建一个浮点型数据
  10 print(c)
  11 print(type(c))


  运行结果如图2.7所示。

  图2.4 运行结果

  在例2-1中,第3行使用int()函数将浮点型数据转为整型数据并通过print()函数输出,第7行使用float()函数将整型数据转为浮点型数据并通过print()函数输出,第9行使用complex()函数创建复数2.3+1.2j,可以认为将浮点数转为复数。

  2.2 运算符

  运算符是用来对变量或数据进行操作的符号,也称作操作符,操作的数据称为操作数。运算符根据其功能可分为算术运算符、赋值运算符、比较运算符、逻辑运算符等。

  2.3.1 算术运算符

  算术运算符用来处理简单的算术运算,包括加、减、乘、除、取余等,具体如表2.3所示。

  表2.3 算术运算符

  在表2.3中,注意除法与整除的区别。接下来演示两者的区别,如例2-2所示。

  例2-2


  1 print(10/2) # 除法
  2 print(5/2)
  3 print(5.0/2)
  4 print(5/2.0)
  5 print(10//2) # 整除
  6 print(5//2)
  7 print(5.0//2)
  8 print(5//2.0)


  运行结果如图2.8所示。

  图2.5 运行结果

  在例2-2中,从运行结果可看出,进行除法运算的结果始终是浮点数,进行整除运算的结果可能是整数也可能是浮点数,只要两个操作数中有一个为浮点数,则结果就为浮点数。

  2.3.2 赋值运算符

  在前面章节的学习中,程序中已多次使用赋值运算符,它的作用就是将变量或表达式的值赋给某一个变量,具体示例如下:

  a = 13

  b = a + 1 # b为14

  如果需要为多个变量赋相同的值,可以简写为如下形式:

  a = b = 13

  上述语句等价于如下语句:

  a = 13

  b = 13

  如果需要为多个变量赋不同的值,可以简写为如下形式:

  a, b, c, d = 13, 3.14, 1 + 2j, True

  输出a、b、c、d值时,可以使用如下语句:

  print(a, b, c, d)

  除此之外,还有几种特殊的赋值运算符,如表2.4所示。

  表2.4 赋值运算符

  接下来演示赋值运算符的用法,如例2-3所示。

  例2-3


 1 a, b = 5, 2
  2 a += b
  3 print(a, b)
  4 a -= b
  5 print(a, b)
  6 a *= b
  7 print(a, b)
  8 a /= b
  9 print(a, b)
  10 a **= b
  11 print(a, b)
  12 a //= b
  13 print(a, b)


  运行结果如图2.9所示。

  图2.6 运行结果

  在例2-3中,使用不同的赋值运算符对a、b进行运算,并将运算结果输出。从运行结果可发现,b的值始终不变。

  2.3.3 比较运算

  比较运算符就是对变量或表达式的结果进行比较。如果比较结果为真,则返回True,否则返回False,具体如表2.5所示。

  表2.5 比较运算符

  接下来演示比较运算符的使用,如例2-4所示。

  例2-4


 1 print(1 == 1)
  2 print(1 == 2)
  3 print(1 == True)
  4 print(0 == False)
  5 print(1.0 == True)
  6 print(0.0 == False)
  7 print((0.0 + 0.0j) == False)


  运行结果如图2.10所示。

  图2.7 运行结果

  在例2-4中,注意1、1.0与True进行等于运算后,结果为True;0、0.0、0.0 + 0.0j与False进行等于运算后,结果为True。

  2.3.4 逻辑运算符

  逻辑运算符用来表示数学中的“与”、“或”、“非”运算,具体如表2.6所示。

  表2.6 逻辑运算符

  在表2.6中,a、b分别为表达式,通常都是使用比较运算符返回的结果作为逻辑运算符的操作数。此外,逻辑运算符也经常出现在条件语句和循环语句中。

  接下来演示逻辑运算符的使用,如例2-5所示。

  例2-5


 1 print(0 and 4)
  2 print(False and 4)
  3 print(1 and 4)
  4 print(1 or 4)
  5 print(True or 4)
  6 print(0 or 4)
  7 print((4 <= 5) and (4 >= 3))
  8 print((4 >= 5) or (4 <= 3))
  9 print(not 1)


  运行结果如图2.11所示。

  图2.8 运行结果

  在例2-5中,程序通过print()函数输出每个逻辑表达式的值。

  2.3.5 位运算符

  位运算符是指对二进制位从低位到高位对齐后进行运算,具体如表2.7所示。

  表2.7 位运算符

  虽然运用位运算可以完成一些底层的系统程序设计,但Python程序很少参与到计算机底层的技术,因此这里只需了解位运算即可。

  接下来演示位运算符的使用,如例2-6所示。

  例2-6


 1 a, b = 7, 8
  2 print(bin(a)) # 二进制形式111
  3 print(bin(b)) # 二进制形式1000
  4 print(bin(a & b))
  5 print(bin(a | b))
  6 print(bin(a ^ b))
  7 print(bin(~a))
  8 print(bin(a << 2))
  9 print(bin(a >> 2))


  运行结果如图2.12所示。

  图2.9 运行结果

  在例2-6中,程序通过print()函数输出每个位运算符参与表达式的值。bin()的作用是将数据转换为二进制形式。

  2.3.6 成员运算符

  成员运算符用于判断指定序列中是否包含某个值,具体如表2.8所示。

  表2.8 成员运算符

  接下来演示成员运算符的使用,如例2-7所示。

  例2-7


  1 A = [1, 2, 3, 4] # 列表
  2 print(1 in A)
  3 print(0 in A)
  4 print(1 not in A)
  5 print(0 not in A)


  运行结果如图2.13所示。

  图2.10 运行结果

  在例2-7中,程序通过print()函数输出每个成员运算符参与表达式的值。

  2.3.7 身份运算符

  身份运算符用于判断两个标识符是否引用同一对象,具体如表2.9所示。

  表2.9 成员运算符

  接下来演示身份运算符的使用,如例2-8所示。

  例2-8


  1 a = b = 10 # a、b都为10
  2 print(a is b)
  3 print(a is not b)
  4 b = 20 # b修改为20
  5 print(a is b)
  6 print(a is not b)


  运行结果如图2.14所示。

  图2.11 运行结果

  在例2-8中,程序通过print()函数输出每个身份运算符参与表达式的值。

  2.3.8 运算符的优先级

  运算符的优先级是指在多种运算符参与运算的表达式中优先计算哪个运算符,与算术运算中“先乘除,后加减”是一样的。如果运算符的优先级相同,则根据结合方向进行计算,表2.10中列出了运算符从高到低优先级的顺序。

  表2.10 运算符优先级

  Python会根据表2.10中运算符的优先级确定表达式的求值顺序,同时还可以使用小括号“()”来控制运算顺序。小括号内的运算将最先计算,因此在程序开发中,编程者不需要刻意记忆运算符的优先级顺序,而是通过小括号来改变优先级以达到目的。

  2.3 小案例

  从键盘输入一个三位整数,计算并输出其百位、十位和个位上的数字,具体实现如例2-9所示。

  例2-9


  1 x = input('请输入一个三位整数:') # 从键盘输入字符串
  2 x = int(x) # 将字符串转换为整数
  3 a = x // 100 # 获取百位上数字
  4 b = x // 10 % 10 # 获取十位上数字
  5 c = x % 10 # 获取个位上数字
  6 print('百位:', a, '十位:', b, '个位:', c)


  程序运行时,从键盘输入356,则运行结果如图2.15所示。

  图2.12 运行结果

  在例2-9中,通过使用//和%运算符可以获取一个三位整数上百位、十位和个位上的数字。在后面学习map()函数后,本例还可以使用以下方法解决,具体如例2-10所示。

  例2-10


  1 x = input('请输入一个三位整数:')
  2 a, b, c = map(int, x)
  3 print('百位:', a, '十位:', b, '个位:', c)


  程序运行时,从键盘输入356,则运行结果如图2.16所示。

  图2.13 运行结果

  暂无须掌握此种用法,等学习完map()函数后,可再翻阅本章此处的例题。

  2.4 本章小结

  本章主要介绍了Python的基本语法,首先讲解标识符与关键字,接着讲解变量与数据类型,最后讲解运算符。本章的知识可能学习起来比较枯燥乏味,却是在将来开发过程中必需掌握的。

  2.5 习题

  1.填空题

  (1) 在Python中,单行注释以 开始。

  (2) 标识符只能以 开头。

  (3) 在Python中,使用 来表示代码块。

  (4) 若a = 2,b = 4,则(a or b)的值为 。

  (5) 布尔型数据只有 和False两种值。

  2.选择题

  (1) 下列整型数据用十六进制表示错误的是( )。

  A.0xac B.0X22

  C.0xB D.4fx

  (2) 下列选项中,不属于数字类型的是( )。

  A.整型 B.浮点型

  C.复数型 D.字符串型

  (3) 下列选项中,可以用来检测变量数据类型的是( )。

  A.print() B.type()

  C.bin() D.int()

  (4) 若a = 7,b = 5,下列选项中正确的是( )。

  A.a//b的值为1.4 B.a/b的值为1

  C.a**b的值为35 D.a%b的值为2

  (5) 下列表达式中为False的选项是( )。

  A.0 == False B.False == ""

  C.0.0 == False D.1.0 == True

  3.思考题

  (1) 简述标识符与关键字的区别。

  (2) 简述Python中有哪些数据类型?

  4.编程题

  编写程序实现交换两个变量的值。

上一篇:HTML5工具初识之网页编辑器

下一篇:第3章 流程控制语句

QQ技术交流群

千锋Python官方①群
790693323

加入群聊