第二章 Python 语言基础

1. 注释

1.1 单行注释

在Python中,使用“#”作为单行注释的符号。从符号“#”开始直到换行为止,“#”后面所有的内容都作为注释的内容,并被Python编译器忽略。

第一种形式:

# 要求输入身高,单位为m(米),如1.70
height=float(input("请输入您的身高:"))

第二种形式:

height=float(input("请输入您的身高:"))        # 要求输入身高,单位为m(米),如1.70

说明:在添加注释时,一定要有意义,即注释能充分解释代码的功能及用途。

1.2 多行注释

在Python中,并没有一个单独的多行注释标记,而是将包含在一对三引号(‘’‘……’‘’)或者(“”“……”“”)之间,并且不属于任何语句的内容都可视为注释,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也称为 多行注释

多行注释通常用来为Python文件、模块、类或者函数等添加版权、功能等信息。

'''

 @ 版权所有:吉林省明日科技有限公司©版权所有

 @ 文件名:demo.py

 @ 文件功能描述:根据身高、体重计算BMI指数

 @ 创建日期:2019年10月31日

 @ 创建人:无语

 @ 修改标识:2019年11月2日

 @ 修改描述:增加根据BMI指数判断身材是否合理功能代码

 @ 修改日期:2019年11月2日

'''

1.3 中文编码声明注释

在Python中,还提供了一种特殊的中文编码声明注释,该注释的出现主要是为了解决 Python 2.x 中不支持直接写中文的问题。虽然在 Python 3.x 中,该问题已经不存在了。但是为了规范页面的编码,同时方便其他程序员及时了解文件所用的编码,建议在文件开始加上中文编码声明注释

例如,指定编码为UTF-8,可以使用下面的中文编码声明注释:

# -*- coding:utf-8 -*-
# 或
# coding=编码

说明:在上面的代码中,“-*-”没有特殊的作用,只是为了美观才加上的。所以上面的代码也可以使用 “ # coding:utf-8 ” 代替。

2. 代码缩进

Python不像其他程序设计语言(如Java或者C语言)采用大括号“{}”分隔代码块,而是采用代码缩进和冒号“:”区分代码之间的层次。

说明:缩进可以使用空格或者键实现。其中,使用空格时,通常情况下采用4个空格作为一个缩进量,而使用Tab键时,则采用一个Tab键作为一个缩进量。通常情况下建议采用空格进行缩进。

在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束,则表示一个代码块的结束。

Python对代码的缩进要求非常严格,同一个级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出SyntaxError异常。例如,代码中有的缩进量是4个空格,还有的是3个空格,就会出现SyntaxError错误

3. 代码规范

3.1 编写规则

Python中采用PEP 8作为编码规范:

  • 每个import语句只导入一个模块,尽量避免一次导入多个模块。
  • 不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。
  • 建议每行不超过80个字符,如果超过,建议使用小括号“()”将多行内容隐式的连接起来,而不推荐使用反斜杠“\”进行连接。(不过以下两种情况除外:Ø 导入模块的语句过长。Ø 注释里的URL)
s=("我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。"
      "但是只要你在爬,就足以给自己留下令生命感动的日子。")

s="我一直认为我是一只蜗牛。我一直在爬,也许还没有爬到金字塔的顶端。\
但是只要你在爬,就足以给自己留下令生命感动的日子。"
  • 使用必要的空行可以增加代码的可读性。
  • 通常情况下,运算符两侧、函数参数之间、“,”两侧建议使用空格进行分隔。
  • 应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。
  • 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显式判断还是必要的。

3.2 命名规范

命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。

  • 模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母。例如,game_main、game_register、bmiexponent 都是推荐使用的模块名称。

  • 包名尽量短小,并且全部使用小写字母,不推荐使用下划线。例如,com.mingrisoft、com.mr、com.mr.book都是推荐使用的包名称,而com_mingrisoft就是不推荐的。

  • 类名采用单词首字母大写形式(即Pascal风格)。例如,定义一个借书类,可以命名为BorrowBook。

  • 模块内部的类采用下划线 “_”+Pascal 风格的类名组成。例如,在 BorrowBook 类中的内部类,可以使用 _BorrowBook 命名。

  • 函数、类的属性和方法的命名规则同模块类似,也是全部使用小写字母,多个字母间用下划线“_”分隔。

  • 常量命名时全部使用大写字母,可以使用下划线 。

  • 使用单下划线 “_” 开头的模块变量或者函数是受保护的,在使用 from ××× import * 语句从模块中导入时这些变量或者函数不能被导入。

  • 使用双下划线 “__” 开头的实例变量或方法是类私有的。

4. 保留字与标识符

4.1 保留字

保留字是Python语言中一些已经被赋予特定意义的单词。开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用。

注意:Python中所有保留字是区分字母大小写的。例如,if是保留字,但是IF就不属于保留字。

常见错误:如果在开发程序时,使用Python中的保留字作为模块、类、函数或者变量等的名称,则会提示“invalid syntax”的错误信息。

4.2 标识符

标识符可以简单地理解为一个名字,比如每个人都有自己的名字,它主要用来标识变量、函数、类、模块和其他对象的名称。

Python语言标识符命名规则如下:

  • 由字母、下划线 “_” 和数字组成。第一个字符不能是数字,目前Python中只允许使用 ISO-Latin 字符集中的字符 A-z 和 a-z 。

  • 不能使用Python中的保留字。

  • 区分字母大小写。

  • Python中以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符。

Ø  以单下划线开头的标识符(如_width)表示不能直接访问的类属性。另外,也不能通过 “ from xxx import * ” 导入。
Ø  以双下划线开头的标识符(如__add)表示类的私有成员。
Ø  以双下划线开头和结尾的是Python里专用的标识,如__init__()表示构造函数。

说明:在Python语言中允许使用汉字作为标识符。

5. 变量

5.1 理解Python中的变量

在大多数编程语言中,都把这一过程称为 “ 把值存储在变量中 ”,意思是在计算机内存中的某个位置。你不需要知道信息存储在内存中的准确位置,只需要记住存储变量时所用的名字,再调用这个名字就可以了。

5.1 变量的定义与使用

在Python中,不需要先声明变量名及其类型,直接赋值即可创建各种类型的变量。但是变量的命名并不是任意的,应遵循以下几条规则:

  • 变量名必须是一个有效的标识符。

  • 变量名不能使用Python中的保留字。

  • 慎用小写字母l和大写字母O。

  • 应选择有意义的单词作为变量名。

为变量赋值可以通过等号(=)来实现。语法格式为:

变量名 = value

另外,Python是一种动态类型的语言,也就是说,变量的类型可以随时变化。

>>> nickname = "碧海苍梧"        	# 字符串类型的变量
>>> print(type(nickname))
<class 'str'>

>>> nickname = 1024           		# 整型的变量
>>> print(type(nickname))
<class 'int'>

说明:在Python语言中,使用内置函数 type() 可以返回变量类型。

在Python中,允许多个变量指向同一个值。例如:将两个变量都赋值为数字2048,再分别应用内置函数id()获取变量的内存地址,将得到相同的结果。

>>> no = number = 2048
>>> id(no)
49364880

>>> id(number)
49364880

说明:在Python语言中,使用内置函数 id() 可以返回变量所指的内存地址。

注意:常量就是程序运行过程中,值不能改变的量。在Python中,并没有提供定义常量的保留字。但是在实际项目中,常量首次赋值后,还是可以被其他代码修改的。

6. 基本数据类型

在内存中存储的数据可以有多种类型。例如:一个人的姓名可以用字符型存储,年龄可以使用数值型存储,婚姻状况可以使用布尔型存储。这里的字符型、数值型、布尔型都是Python语言中提供的基本数据类型。下面将详细介绍基本数据类型。

6.1 数字类型

在Python语言中,提供了数字类型用于保存这些数值,并且它们是 不可改变的数据类型 。(如果修改数字类型变量的值,那么会先把该值存放到内存中,然后修改变量让其指向新的内存地址)。

6.1.1 整数

整数用来表示整数数值,即没有小数部分的数值。在Python语言中,整数包括正整数、负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要指定一个非常大的整数,只需要写出其所有位数即可。

整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。

  • 十进制整数:十进制整数的表现形式大家都很熟悉。
31415926535897932384626
6666666666666666666666666666666666666666666666666666666666666666666666666666
-2020
0

说明:在Python 2.x中,如果输入的数比较大时,Python会自动在其后面加上字母L( 也可能是小写字母l )。
注意:不能以0作为十进制数的开头(0除外)。

  • 八进制整数:由0~7组成,进位规则为“逢八进一”,并且以0o/0O开头的数,如0o123(转换成十进制数为83)、-0o123(转换成十进制数为-83)。

注意:在Python 3.x中,八进制数,必须以0o/0O开头。但在Python 2.x中,八进制数可以以0开头。

  • 十六进制整数:由09,AF组成,进位规则为“逢十六进一”,并且以0x/0X开头的数,如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。

注意:十六进制数必须以0X或0x开头。

  • 二进制整数:由0和1两个数组成,进位规则是“逢二进一”,如101(转换成十制数后为5)、1010(转换成十进制数后为10)。

6.1.2 浮点数

浮点数由整数部分和小数部分组成,主要用于处理包括小数的数,例如:1.414、0.5、-1.732、3.1415926535897932384626等。浮点数也可以使用科学计数法表示,例如,2.7e2、-3.14e5和6.16e-2等。

注意:在使用浮点数进行计算时,可能会出现小数位数不确定的情况。例如,计算0.1+0.1时,将得到想要的0.2,而计算0.1+0.2时,将得到0.30000000000000004(想要的结果为0.3),执行过程如下:

>>> 0.1+0.1
0.2
>>> 0.1+0.2
0.30000000000000004

对于这种情况,所有语言都存在这个问题,暂时忽略多余的小数位数即可。

注意: str() 函数用于将数值转换为字符串。

6.1.3 复数

Python中的复数与数学中的复数的形式完全一致,都是由实部和虚部组成,并且使用j或J表示虚部。当表示一个复数时,可以将其实部和虚部相加,例如,一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。

6.2 字符串类型

字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在Python中,字符串属于 不可变序列,通常使用单引号“’ ‘”、双引号“" "”或者三引号“’‘’ ‘’'或"“” “”"”括起来。这三种引号形式在语义上没有差别,只是在形式上有些差别。其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在连续的多行上。

title = '我喜欢的名言警句'                              	# 使用单引号,字符串内容必须在一行

mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。"     	# 使用双引号,字符串内容必须在一行

# 使用三引号,字符串内容可以分布在多行
mot_en = '''Our destiny offers not the cup of despair,
but the chance of opportunity.'''

print(title)
print(mot_cn)
print(mot_en)

注意:字符串开始和结尾使用的引号形式必须一致。另外当需要表示复杂的字符串时,还可以嵌套使用引号。

'在Python中也可以使用双引号(" ")定义字符串'
"'(・・)nnn'也是字符串"
"""'---' "_"*

Python中的字符串还 支持转义字符。所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。

转义字符说明
\续行符
\n换行符
\0
\t水平制表符,用于横向跳到下一制表位
\''双引号
\'单引号
\\一个反斜杠
\f换页
\0dd八进制数,dd代表字符,如\012代表换行
\xhh十六进制数,hh代表字符,如\x0a代表换行

注意:在字符串定界符引前的前面加上字母r(或R),那么该字符串将原样输出,其中的转义字符将不进行转义。

6.3 布尔类型

布尔类型主要用来表示真值或假值。在Python中,标识符True和False被解释为布尔值。另外,Python中的布尔值可以转化为数值,True表示1,False表示0。

说明:Python中的布尔类型的值可以进行数值运算,例如,“False + 1”的结果为1。但是不建议对布尔类型的值进行数值运算。

在Python中,所有的对象都可以进行真值测试。其中,只有下面列出的几种情况得到的值为假,其他对象在if或者while语句中都表现为真

  • False或None。

  • 数值中的零,包括0、0.0、虚数0。

  • 空序列,包括字符串、空元组、空列表、空字典。

  • 自定义对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。

6.4 数据类型转换

Python是动态类型的语言(也称为弱类型语言),不需要像Java或者C语言一样在使用变量前声明变量的类型。虽然Python不需要先声明变量的类型,但有时仍然需要用到类型转换。

函数作用
int(x)x转换成整数类型
float(x)x转换成浮点数类型
complex(real [,imag])创建一个复数
str(x)x转换为字符串
repr(x)x转换为表达式字符串
eval(str)计算在字符串中的有效Python表达式,并返回一个对象
chr(x)将整数x转换为一个字符
ord(x)将一个字符x转换为它对应的整数值
hex(x)将一个整数x转换为一个十六进制字符串
oct(x)将一个整数x转换为一个八进制的字符串

常见错误:在进行数据类型转换时,如果把一个非数字字符串转换为整型。

7. 算数运算符

算术运算符是处理四则运算的符号,在数字的处理中应用得最多。

运算符说明实例结果
+12.45+1527.45
-4.56-0.264.3
*5*3.618
/7月2日3.5
%求余,即返回除法的余数7%21
//取整除,即返回商的整数部分7//23
**幂,即返回xy次方2.00E+0416,即24

说明:在算术运算符中使用%求余,如果除数(第二个操作数)是负数,那么取得的结果也是一个负值。

注意:使用除法(/或//)运算符和求余运算符时,除数不能为0,否则将会出现异常。

说明:在Python 2.x中,除法运算符(/)的执行结果与Python 3.x不一样。在Python 2.x中,如果操作数为整数,则结果也将截取为整数。而在Python 3.x中,计算结果为浮点数。例如,7/2,在Python 2.x中结果为3,而在Python 3.x中结果为3.5。

8. 赋值运算符

赋值运算符主要用来为变量等赋值。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。

运算符说明举例展开形式
=简单的赋值运算x=yx=y
+=加赋值x+=yx=x+y
-=减赋值x-=yx=x-y
*=乘赋值x*=yx=x*y
/=除赋值x/=yx=x/y
%=取余数赋值x%=yx=x%y
**=幂赋值x**=yx=x**y
//=取整除赋值x//=yx=x//y

注意:混淆=和==是编程中最常见的错误之一。很多语言(不只是Python)都使用了这两个符号,另外很多程序员也经常会用错这两个符号。

9. 比较(关系)运算符

比较运算符,也称关系运算符,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回True,如果为假,则返回False。比较运算符通常用在条件语句中作为判断的依据。

运算符作用举例结果
大于'a' > 'b'FALSE
小于156 < 456TRUE
==等于'c' == 'c'TRUE
!=不等于'y' != 't'TRUE
>=大于或等于479 >= 426TRUE
<=小于或等于62.45 <= 45.5FALSE

注意:在Python中,当需要判断一个变量是否介于两个值之间时,可以采用 “值1 < 变量 < 值2” 的形式,例如 “0 < a < 100”。

10. 逻辑运算符

逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值,Python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。

运算符含义用法结合方向
and逻辑与op1 and op2从左到右
or逻辑或op1 or op2从左到右
not逻辑非not op从右到左

使用逻辑运算符进行逻辑运算时,其运算结果:

表达式1表达式2表达式1 and 表达式2表达式1 or 表达式2not 表达式1
TRUETRUETRUETRUEFALSE
TRUEFALSEFALSETRUEFALSE
FALSEFALSEFALSEFALSETRUE
FALSETRUEFALSETRUETRUE

11. 位运算符

位运算符是把数字看作二进制数来进行计算的,因此,需要先将要执行运算的数据转换为二进制,然后才能进行执行运算。Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)和右移位(>>)运算符。

“位与”运算的运算符为“&”,“位与”运算的运算法则是:两个操作数据的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

在这里插入图片描述

“位或”运算的运算符为“|”,“位或”运算的运算法则是:两个操作数据的二进制表示,只有对应数位都是0,结果数位才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。

在这里插入图片描述

“位异或”运算的运算符是“^”,“位异或”运算的运算法则是:当两个操作数的二进制表示相同(同时为0或同时为1)时,结果为0,否则为1。若两个操作数的精度不同,则结果数的精度与精度高的操作数相同。

在这里插入图片描述

“位取反”运算也称“位非”运算,运算符为“~”。“位取反”运算就是将操作数中对应的二进制数1修改为0,0修改为1。

在这里插入图片描述
左移位运算符<<是将一个二进制操作数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。左移位运算相当于乘以2的n次幂。

例如,int类型数据48对应的二进制数为00110000,将其左移1位,根据左移位运算符的运算规则可以得出(00110000<<1)=01100000,所以转换为十进制数就是96(48×2);将其左移2位,根据左移位运算符的运算规则可以得出(00110000<<2)=11000000,所以转换为十进制数就是192(48×22)。
在这里插入图片描述
右移位运算符>>是将一个二进制操作数向右移动指定的位数,右边(低位端)溢出的位被丢弃,而在填充左边(高位端)的空位时,如果最高位是0(正数),左侧空位填入0;如果最高位是1(负数),左侧空位填入1。右移位运算相当于除以2的n次幂。

正数48右移1位的运算过程:
在这里插入图片描述
负数-80右移2位的运算过程:
在这里插入图片描述

12. 运算符优先级

Python的运算符的运算规则是:优先级高的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行。也可以像四则运算那样使用小括号,括号内的运算最先执行。

运算符说明
**
~+-取反、正号和负号
*/%//算术运算符
+-算术运算符
<<>>位运算符中的左移和右移
&位运算符中的位与
^位运算符中的位异或
位运算符中的位或
<<=>>=!===比较运算符

说明:在编写程序时尽量使用括号“()”来限定运算次序,避免运算次序发生错误。

13. 基本的输入输出

13.1 使用input()函数输入

在Python中,使用内置函数input()可以接收用户的键盘输入。input()函数的基本用法如下:

variable = input("提示文字")

其中,variable为保存输入结果的变量,双引号内的文字用于提示要输入的内容。例如,想要接收用户输入的内容,并保存到变量tip中,可以使用下面的代码:

tip = input("请输入文字:")

在Python 3.x中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。例如,想要接收整型的数字并保存到变量age中,可以使用下面的代码:

age = int(input("请输入数字:"))

说明:在Python 2.x中,input()函数接收内容时,数值直接输入即可,并且接收后的内容作为数字类型;而如果要输入字符串类型的内容,需要将对应的字符串使用引号括起来,否则会报错。

13.2 使用print()函数输出

默认的情况下,在Python中,使用内置的print()函数可以将结果输出到IDLE或者标准控制台上。其基本语法格式如下:

print(输出内容)

其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将计算结果输出。例如:

a = 10                                     	# 变量a,值为10
b = 6                                       # 变量b,值为6
print(6)                                    # 输出数字6
print(a*b)                                  # 输出变量a*b的结果60
print(a if a>b else b)                     	# 输出条件表达式的结果10
print("成功的唯一秘诀――坚持最后一分钟")   		# 输出字符串“成功的唯一秘诀――坚持最后一分钟”

说明:在Python中,默认情况下,一条print()语句输出后会自动换行,如果想要一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。

print(a,b)                               # 输出变量a和b,结果为:10 6

在输出时,也可以把结果输出到指定文件,例如,将一个字符串“命运给予我们的不是失望之酒,而是机会之杯。输出到 D:\mot.txt 中,代码如下:

fp = open(r'D:\mot.txt','a+')                               # 打开文件
print("命运给予我们的不是失望之酒,而是机会之杯。",file=fp)     	# 输出到文件中
fp.close()                                                  # 关闭文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值