零基础学python,看完这篇文章,你的python基础就差不多了!

Python基础语法

1. 认识Python

1.1 Python 简介

Python 的创始人为吉多·范罗苏姆(Guido van Rossum)。

Python 的设计目标:

  • 一门

    简单直观的语言

    并与主要竞争者一样强大

  • 开源

    ,以便任何人都可以为它做贡献

  • 代码

    像纯英语那样容易理解

  • 适用于

    短期

    开发的日常任务

Python 的设计哲学:

  • 优雅、明确、简单

Python 开发者的哲学是:用一种方法,最好是只有一种方法来做一件事

Python 是完全面向对象的语言,在 Python 中一切皆对象。

可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把这部分程序用 C 或 C 编写,然后在 Python 程序中使用它们。

1.2. 第一个Python程序

执行 Python 程序的三种方式:

解释器、交互式运行、IDE运行

Python 是一个格式非常严格的程序设计语言。

python 2.x 默认不支持中文

  • ASCII 字符只包含 256 个字符,不支持中文

  • Python 2.x 的解释器名称是

    python

  • Python 3.x 的解释器名称是

    python3

为了照顾现有的程序,官方提供了一个过渡版本 —— Python 2.6

提示:如果开发时,无法立即使用 Python 3.0(还有极少的第三方库不支持 3.0 的语法),建议

  • 先使用 Python 3.0 版本进行开发

  • 然后使用 Python 2.6、Python 2.7 来执行,并且做一些兼容性的处理

IPython 是一个 python 的 交互式 shell,比默认的 python shell 好用得多,它支持 bash shell 命令,适合于学习/验证 Python 语法或者局部代码。

集成开发环境(IDE,Integrated Development Environment)—— 集成了开发软件需要的所有工具,一般包括以下工具:

  • 图形用户界面

  • 代码编辑器(支持

    代码补全

    自动缩进

  • 编译器/解释器

  • 调试器(

    断点

    单步执行

  • ……

1.3. PyCharm 的设置

PyCharm 的 配置信息 是保存在 用户家目录下 的 .PyCharmxxxx.x 目录下的,xxxx.x 表示当前使用的 PyCharm 的版本号

1.3.1 恢复 PyCharm 的初始设置:

  1. 关闭正在运行的 PyCharm

  2. 在终端中执行以下终端命令,删除 PyCharm 的配置信息目录:

$ rm -r ~/.PyCharm2016.3
  1. 重新启动 PyCharm

1.3.2 PyCharm 安装和启动步骤:

  1. 执行以下终端命令,解压缩下载后的安装包

$ tar -zxvf pycharm-professional-2017.1.3.tar.gz
  1. 将解压缩后的目录移动到 /opt 目录下,可以方便其他用户使用

/opt 目录用户存放给主机额外安装的软件

$ sudo mv pycharm-2017.1.3/ /opt/
  1. 切换工作目录

$ cd /opt/pycharm-2017.1.3/bin
  1. 启动 PyCharm

$ ./pycharm.sh

1.3.3 设置启动图标

  • 在专业版中,选择菜单

    Tools

    /

    Create Desktop Entry...

    可以设置任务栏启动图标

  • 注意:设置图标时,需要勾选 Create the entry for all users

  • 快捷方式文件

  • /usr/share/applications/jetbrains-pycharm.desktop

在 ubuntu 中,应用程序启动的快捷方式通常都保存在 /usr/share/applications 目录下

1.3.4 卸载之前版本的 PyCharm

要卸载 PyCharm 只需要做以下两步工作:

  1. 删除解压缩目录

$ sudo rm -r /opt/pycharm-2016.3.1/
  1. 删除家目录下用于保存配置信息的隐藏目录

$ rm -r ~/.PyCharm2016.3/

如果不再使用 PyCharm 还需要将 /usr/share/applications/ 下的 jetbrains-pycharm.desktop 删掉

1.4. 多文件项目的演练

  • 开发

    项目

    就是开发一个

    专门解决一个复杂业务功能的软件

  • 通常每

    一个项目

    就具有一个

    独立专属的目录

    ,用于保存

    所有和项目相关的文件

  • 在 PyCharm 中,要想让哪一个 Python 程序能够执行,必须首先通过

    鼠标右键的方式执行

    一下

  • 对于初学者而言,在一个项目中设置多个程序可以执行,是非常方便的,可以方便对不同知识点的练习和测试

  • 对于商业项目而言,通常在一个项目中,只有一个

    可以直接执行的 Python 源程序

2. 注释

  • 注释的作用

  • 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性

2.1 单行注释(行注释)

  • 以 # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用

print('hello python') # 输出 `hello python`

为了保证代码的可读性,# 后面建议先添加一个空格,然后再编写相应的说明文字;为了保证代码的可读性,注释和代码之间 至少要有 两个空格。

2.2 多行注释(块注释)

  • 要在 Python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以)

''' 这是一个多行注释 在多行注释之间,可以写很多很多的内容…… ''' print('hello python')

提示:

  1. 注释不是越多越好

    ,对于一目了然的代码,不需要添加注释

  2. 对于

    复杂的操作

    ,应该在操作开始前写上若干行注释

  3. 对于

    不是一目了然的代码

    ,应在其行尾添加注释(为了提高可读性,注释应该至少离开代码 2 个空格)

  4. 绝不要描述代码,假设阅读代码的人比你更懂 Python,他只是不知道你的代码要做什么

2.3 代码规范:

  • Python 官方提供有一系列 PEP(Python Enhancement Proposals) 文档,其中第 8 篇文档专门针对

    Python 的代码格式

    给出了建议,也就是俗称的

    PEP 8

  • 文档地址:https://www.python.org/dev/peps/pep-0008/

  • 谷歌有对应的中文文档:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

3. 运算符

3.1 算数运算符

是完成基本的算术运算使用的符号,用来处理四则运算,而“ ”和“*”还可以用来处理字符串。

3.2 比较(关系)运算符

  • Python 2.x 中判断

    不等于

    还可以使用 <> 运算符

  • != 在 Python 2.x 中同样可以用来判断

    不等于

3.3 赋值运算符

  • 在 Python 中,使用 = 可以给变量赋值。在算术运算时,为了简化代码的编写,Python 还提供了一系列的 与

    算术运算符

    对应的

    赋值运算符

    ,注意:

    赋值运算符中间不能使用空格

3.4 身份运算符

身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述:

辨析

  • is 用于判断 两个变量引用的

    对象

    是否为同一个

  • == 用于判断 引用变量的

    是否相等

3.5 成员运算符

Python成员运算符测试给定值是否为序列中的成员。 有两个成员运算符,如下所述:

3.6 逻辑运算符

3.7 运算符优先级

  • 以下表格的算数优先级由高到最低顺序排列:

  1. 操作系统会首先让

    CPU

    Python 解释器

    的程序复制到

    内存

  2. Python 解释器

    根据语法规则,

    从上向下

    CPU

    翻译

    Python 程序中的代码

  3. CPU

    负责执行翻译完成的代码

Python 的解释器有多大?

  • 执行以下终端命令可以查看 Python 解释器的大小

# 1. 确认解释器所在位置 $ which python # 2. 查看 python 文件大小(只是一个软链接) $ ls -lh /usr/bin/python # 3. 查看具体文件大小 $ ls -lh /usr/bin/python2.7

4. 变量

4.1 变量定义

  • 在 Python 中,每个变量

    在使用前都必须赋值

    ,变量

    赋值以后

    该变量

    才会被创建

  • 可以用

    其他变量的计算结果

    来定义变量

  • 变量名 只有在

    第一次出现

    才是

    定义变量

变量名 = 值

使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用 print 函数

使用解释器执行,如果要输出变量的内容,必须要要使用 print 函数

4.2 变量的类型

  • 在 Python 中定义变量是

    不需要指定类型

    (在其他很多高级语言中都需要),Python 可以根据 = 等号右侧的值,自动推导出变量中存储数据的类型

  • 数据类型可以分为

    数字型

    非数字型

    数字型

  • 整型 (int):Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。

  • 浮点型(float)

  • 布尔型(bool) :真 True 非 0 数 —— 非零即真,假 False 0。

  • 复数型 (complex):复数是由x yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。

  • 非数字型:有些运算符还支持这些数据类型,详见4.4.5.3 运算符。

  • 字符串(str):加号( )是字符串连接运算符,星号(*)是重复运算符。

  • 列表(list)

  • 元组(tuple)

  • 字典(dict)

提示:在 Python 2.x 中,整数 根据保存数值的长度还分为:

  • int(整数)

  • long(长整数)

  • 使用 type 函数可以查看一个变量的类型

In [1]: type(name)

<补>不同类型变量之间的计算

  1. 数字型变量

    之间可以直接计算

  • 在 Python 中,两个数字型变量是可以直接进行 算数运算的

  • 如果变量是 bool 型,在计算时

  • True 对应的数字是 1

  • False 对应的数字是 0

  1. 字符串变量

    之间使用 拼接字符串

  2. 字符串变量

    可以和

    整数

    使用 * 重复拼接相同的字符串

  3. 数字型变量

    字符串

    之间

    不能进行其他计算

<补>从键盘获取输入信息:input

  • 在 Python 中可以使用 input 函数从键盘等待用户的输入

  • 用户输入的

    任何内容

    Python 都认为是一个

    字符串

字符串变量 = input('提示信息:')

<补>类型转换函数

price = float(input('请输入价格:'))

<补>格式化输出:print

  • 如果希望输出文字信息的同时,

    一起输出

    数据

    ,就需要使用到

    格式化操作符

  • % 被称为

    格式化操作符

    ,专门用于处理字符串中的格式

  • 包含 % 的字符串,被称为

    格式化字符串

  • % 和不同的

    字符

    连用,

    不同类型的数据

    需要使用

    不同的格式化字符

  • 语法格式如下:

print('格式化字符串' % 变量1) print('格式化字符串' % (变量1, 变量2...))

4.3 变量的命名

4.3.1 标识符和关键字

标示符就是程序员定义的 变量名函数名

  • 标示符可以由

    字母

    下划线

    数字

    组成

  • 不能以数字开头

  • 不能与关键字重名

关键字 就是在 Python 内部已经使用的标识符

  • 关键字

    具有特殊的功能和含义

  • 开发者

    不允许定义和关键字相同的名字的标识符

  • 通过以下命令可以查看 Python 中的关键字

In [1]: import keyword In [2]: print(keyword.kwlist)

4.3.2 变量的命名规则

命名规则 可以被视为一种 惯例,并无绝对与强制

目的是为了 增加代码的识别和可读性

注意 Python 中的 标识符区分大小写的

  1. 在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格

  2. 在 Python 中,如果 变量名 需要由 二个 或 多个单词 组成时,可以按照以下方式命名:每个单词都使用小写字母,单词与单词之间使用

    _下划线

    连接,例如:first_name、last_name、qq_number、qq_password。

当然,还有驼峰命名法:

小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写,例如:firstName、lastName。

大驼峰式命名法,每一个单词的首字母都采用大写字母,例如:FirstName、LastName、CamelCase 。

4.4 高级变量类型

在 Python 中,所有 非数字型变量 都支持以下特点:

1. 都是一个 序列 sequence,也可以理解为 容器

2. 取值 []

3. 遍历 for in

4. 计算长度len最大/最小值max/min、比较删除del

5. 链接重复 *

6. 切片

4.4.1 列表(list)

  • List(列表) 是 Python 中使用

    最频繁

    的数据类型,在其他语言中通常叫做

    数组

    ,专门用于存储

    一串 信息

    ,列表用 [] 定义,

    数据

    之间使用 , 分隔,列表的

    索引

    从 0 开始。

索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标

注意:从列表中取值时,如果 超出索引范围,程序会报错

name_list = ['zhangsan', 'lisi', 'wangwu']

<补>del 关键字

  • 使用 del 关键字(delete) 同样可以删除列表中元素

  • del 关键字本质上是用来

    将一个变量从内存中删除的

  • 如果使用 del 关键字将变量从内存中删除,后续的代码就不能再使用这个变量了

In [1]: l = [1,2,3,4] In [2]: del l[1] In [3]: l[1] Out[3]: 3

在日常开发中,要从列表删除数据,建议 使用列表提供的方法

<补>函数与方法

  • 函数

    封装了独立功能,可以直接调用

函数名(参数)

函数需要死记硬背

  • 方法

    和函数类似,同样是封装了独立的功能

  • 方法

    需要通过

    对象

    来调用,表示针对这个

    对象

    要做的操作

对象.方法名(参数)

在变量后面输入 .,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多

<补>循环遍历

  • 遍历

    就是

    从头到尾

    依次

    列表

    中获取数据,在

    循环体内部

    针对

    每一个元素

    ,执行相同的操作。

  • 在 Python 中为了提高列表的遍历效率,使用 for 就能够实现迭代遍历。

# for 循环内部使用的变量 in 列表 for name in name_list: 循环内部针对列表元素进行操作 print(name)

for-in循环流程图

  • 尽管 Python 的

    列表

    中可以

    存储不同类型的数据

  • 但是在开发中,更多的应用场景是

  1. 列表

    存储相同类型的数据

  2. 通过

    迭代遍历

    ,在循环体内部,针对列表中的每一项元素,执行相同的操作

4.4.2 元组(tuple)

  • Tuple(元组)与列表类似,不同之处在于元组的

    元素不能修改元组

    表示多个元素组成的序列

  • 元组

    在 Python 开发中,有特定的应用场景

  • 用于存储

    一串 信息

    数据

    之间使用 , 分隔

  • 元组用 () 定义,元组的

    索引

    从 0 开始,

    索引

    就是数据在

    元组

    中的位置编号。

info_tuple = ('zhangsan', 18, 1.75)

创建空元组:

info_tuple = ()

元组中 只包含一个元素 时,需要 在元素后面添加逗号

info_tuple = (50, )

元组示意图

  • 在 Python 中,可以使用 for 循环遍历所有非数字型类型的变量:

    列表

    元组

    字典

    以及

    字符串

  • 提示:在实际开发中,除非

    能够确认元组中的数据类型

    ,否则针对元组的循环遍历需求并不是很多

  • 在开发中,更多的应用场景是:

  • 函数的 参数 和 返回值

    ,一个函数可以接收

    任意多个参数

    ,或者

    一次返回多个数据

  • 格式字符串

    ,格式化字符串后面的 () 本质上就是一个元组

  • 让列表不可以被修改

    ,以保护数据安全

<补>元组和列表之间的转换

  • 使用 list 函数可以把元组转换成列表

list(元组)
  • 使用 tuple 函数可以把列表转换成元组

tuple(列表)

4.4.3 字典(dict)

dict(字典) 是 除列表以外 Python 之中 最灵活 的数据类型。

字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体 的相关信息

  • 和列表的区别:

  • 列表

    有序

    的对象集合

  • 字典

    无序

    的对象集合

  • 字典用 {} 定义。

  • 字典使用

    键值对

    存储数据,键值对之间使用

    逗号

    , 分隔:

  • key 是索引

  • value 是数据

  • 之间使用

    冒号

    : 分隔

  • 键必须是唯一的

  • 可以取任何数据类型,但

    只能使用

    字符串

    数字

    元组

xiaoming = {'name': '小明', 'age': 18, 'gender': True, 'height': 1.75}
  • 字典的遍历 就是 依次 从 字典 中获取所有键值对:

# for 循环内部使用的 `key 的变量` in 字典 for k in xiaoming: print('%s: %s' % (k, xiaoming[k]))

提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多

  • 尽管可以使用 for in 遍历

    字典

  • 但是在开发中,更多的应用场景是:

  • 使用

    多个键值对

    ,存储

    描述一个 物体 的相关信息

    —— 描述更复杂的数据信息

  • 多个字典

    放在

    一个列表

    中,再进行遍历,在循环体内部针对每一个字典进行

    相同的处理

card_list = [{'name': '张三',

'qq': '12345',

'phone': '110'},

{'name': '李四',

'qq': '54321',

'phone': '10086'}

]

4.4.4 字符串(str)

  • 字符串

    就是

    一串字符

    ,是编程语言中表示文本的数据类型

  • 在 Python 中可以使用

    一对双引号

    ' 或者

    一对单引号

    ' 定义一个字符串

  • 虽然可以使用 \' 或者 \' 做字符串的转义,但是在实际开发中:

  • 如果字符串内部需要使用 ',可以使用 ' 定义字符串

  • 如果字符串内部需要使用 ',可以使用 ' 定义字符串

  • 可以使用

    索引

    获取一个字符串中

    指定位置的字符

    ,索引计数从

    0

    开始

  • 也可以使用 for

    循环遍历

    字符串中每一个字符

大多数编程语言都是用 ' 来定义字符串

string = 'Hello Python' for c in string: print(c)

提示:在 python 中对字符串操作,内置提供的方法足够多,使得在开发时,能够针对字符串进行更加灵活的操作!应对更多的开发需求!

1) 判断类型 - 9

2) 查找和替换 - 7

3) 大小写转换 - 5

4) 文本对齐 - 3

5) 去除空白字符 - 3

6) 拆分和连接 - 5

<补>字符串的切片

  • 切片

    方法适用于

    字符串

    列表

    元组切片

    使用

    索引值

    来限定范围,从一个大的

    字符串

    切出

    小的

    字符串

  • 列表

    元组

    都是

    有序

    的集合,都能够

    通过索引值

    获取到对应的数据

  • 字典

    是一个

    无序

    的集合,是使用

    键值对

    保存数据

字符串[开始索引:结束索引:步长]

注意

  • 指定的区间属于

    左闭右开

    型 [开始索引, 结束索引) => 开始索引 <= 范围 < 结束索引从 起始 位开始,到

    结束位的前一位

    结束(

    不包含结束位本身

    )

  1. 从头开始,

    开始索引

    数字可以省略,冒号不能省略

  2. 到末尾结束,

    结束索引

    数字可以省略,冒号不能省略

  3. 步长默认为 1,如果连续切片,

    数字和冒号都可以省略

<补>索引的顺序和倒序

  • 在 Python 中不仅支持

    顺序索引

    ,同时还支持

    倒序索引

  • 所谓倒序索引就是

    从右向左

    计算索引:最右边的索引值是

    -1

    ,依次递减。

num_str = '0123456789' # 1. 截取从 2 ~ 5 位置 的字符串 print(num_str[2:6]) # 2. 截取从 2 ~ `末尾` 的字符串 print(num_str[2:]) # 3. 截取从 `开始` ~ 5 位置 的字符串 print(num_str[:6]) # 4. 截取完整的字符串 print(num_str[:]) # 5. 从开始位置,每隔一个字符截取字符串 print(num_str[::2]) # 6. 从索引 1 开始,每隔一个取一个 print(num_str[1::2]) # 倒序切片 # -1 表示倒数第一个字符 print(num_str[-1]) # 7. 截取从 2 ~ `末尾 - 1` 的字符串 print(num_str[2:-1]) # 8. 截取字符串末尾两个字符 print(num_str[-2:]) # 9. 字符串的逆序(面试题) print(num_str[::-1])

4.4.5 公共方法和变量的高级应用

4.4.5.1 内置函数

Python 包含了以下内置函数:

注意字符串 比较符合以下规则: '0' < 'A' < 'a'。

4.4.5.2 切片

  • 切片

    使用

    索引值

    来限定范围,从一个大的

    字符串

    切出

    小的

    字符串

  • 列表

    元组

    都是

    有序

    的集合,都能够

    通过索引值

    获取到对应的数据

  • 字典

    是一个

    无序

    的集合,是使用

    键值对

    保存数据

4.4.5.3 运算符

注意

  • in 在对

    字典

    操作时,判断的是

    字典的键

  • in 和 not in 被称为

    成员运算符

4.4.5.4 内置函数完整的 for 循环语法

  • 在 Python 中完整的 for 循环 的语法如下:

for 变量 in 集合: 循环体代码 else: 没有通过 break 退出循环,循环结束后,会执行的代码

应用场景:

  • 迭代遍历

    嵌套的数据类型时,例如

    一个列表包含了多个字典

  • 需求:要判断 某一个字典中 是否存在 指定的 值

  • 如果

    存在

    ,提示并且退出循环

  • 如果

    不存在

    ,在

    循环整体结束

    后,希望

    得到一个统一的提示

4.4.5.5 变量的引用

  • 变量 和 数据 都是保存在

    内存

    中的

  • 在 Python 中

    函数 的 参数传递

    以及

    返回值

    都是靠

    引用

    传递的

在 Python 中:变量数据 是分开存储的,数据 保存在内存中的一个位置,变量 中保存着数据在内存中的地址,就叫做 引用,使用 id() 函数可以查看变量中保存数据所在的 内存地址

注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

  • 变量

    不再

    对之前的数据引用

  • 变量

    改为

    对新赋值的数据引用

在 Python 中,变量的名字类似于 便签纸 贴在 数据 上:

  • 定义一个整数变量 a,并且赋值为 1

在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的

结果

结果

4.4.5.6 可变和不可变类型

  • 不可变类型

    ,内存中的数据不允许被修改:

  • 数字类型 int, bool, float, complex, long(2.x)

  • 字符串 str

  • 元组 tuple

  • 可变类型

    ,内存中的数据可以被修改:

  • 列表 list

  • 字典 dict

注意:字典的 key 只能使用不可变类型的数据

注意

  1. 可变类型

    的数据变化,是通过

    方法

    来实现的

  • 如果给一个可变类型的变量,赋值了一个新的数据,

    引用会修改

    变量

    不再

    对之前的数据引用

  • 变量

    改为

    对新赋值的数据引用

<补>哈希 (hash)

  • Python 中内置有一个名字叫做 hash(o) 的函数:接收一个

    不可变类型

    的数据作为

    参数

    返回

    结果是一个

    整数

  • 哈希 是一种

    算法

    ,其作用就是提取数据的

    特征码(指纹)

    相同的内容

    得到

    相同的结果

    不同的内容

    得到

    不同的结果

  • 在 Python 中,设置字典的

    键值对

    时,会首先对 key 进行 hash 已决定如何在内存中保存字典的数据,以方便

    后续

    对字典的操作:

    增、删、改、查

    :键值对的 key 必须是不可变类型数据,键值对的 value 可以是任意类型的数据。

4.4.5.7 局部变量和全局变量

  • 局部变量

    是在

    函数内部

    定义的变量,

    只能在函数内部使用

    ;函数执行结束后,

    函数内部的局部变量,会被系统回收

    ;不同的函数,可以定义相同的名字的局部变量,但是

    彼此之间

    不会产生影响;局部变量一般

    临时

    保存

    函数内部需要使用的数据

  • 全局变量

    是在

    函数外部定义

    的变量(没有定义在某一个函数内),

    所有函数

    内部

    都可以使用这个变量

提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

注意:函数执行时,需要处理变量时 会:

  1. 首先 查找

    函数内部

    是否存在 指定名称 的局部变量,如果有,直接使用

  2. 如果没有,查找

    函数外部

    是否存在 指定名称 的全局变量,如果有,直接使用

  3. 如果还没有,程序报错!

注意:函数不能直接修改全局变量的引用,如果要修改,必须要用global声明该变量是全局变量。

注意:为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:全局变量名前应该增加 g_ 或者 gl_ 的前缀。

5. 判断(分支)

5.1 if 语句语法

1、if 判断语句基本语法:

if 要判断的条件: 条件成立时,要做的事情 ……

注意:代码的缩进为一个 tab 键,或者 4 个空格 —— 建议使用空格

  • 在 Python 开发中,Tab 和空格不要混用!

2、如果需要在 不满足条件的时候,做某些事情,该如何做呢?

if 要判断的条件: 条件成立时,要做的事情 …… else: 条件不成立时,要做的事情 ……
  • 在程序开发中,通常 在判断条件时,会需要同时判断多个条件,只有多个条件都满足,才能够执行后续代码,这个时候需要使用到 逻辑运算符。

  • Python 中的 逻辑运算符 包括:

    与 and

    或 or

    非 not

    三种

条件1 and 条件2 :两个条件同时满足,返回 True 条件1 or 条件2:两个条件只要有一个满足,返回 True not 条件:非,不是

3、如果希望 再增加一些条件条件不同,需要执行的代码也不同 时,就可以使用 elif :

if 条件1: 条件1满足执行的代码 …… elif 条件2: 条件2满足时,执行的代码 …… elif 条件3: 条件3满足时,执行的代码 …… else: 以上条件都不满足时,执行的代码 ……

注意

  • elif 和 else 都必须和 if 联合使用,而不能单独使用

  • 可以将 if、elif 和 else 以及各自缩进的代码,看成一个

    完整的代码块

4、在开发中,使用 if 进行条件判断,如果希望 在条件成立的执行语句中增加条件判断,就可以使用 if 的嵌套

if 条件 1: 条件 1 满足执行的代码 …… if 条件 1 基础上的条件 2: 条件 2 满足时,执行的代码 …… # 条件 2 不满足的处理 else: 条件 2 不满足时,执行的代码 # 条件 1 不满足的处理 else: 条件1 不满足时,执行的代码 ……

5.2 if语句的应用

5.2.1 随机数的处理

  • 在 Python 中,要使用随机数,首先需要导入

    随机数

    模块

    —— “工具包”

import random
  • 导入模块后,可以直接在

    模块名称

    后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数

  • random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b

  • 例如:

random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20 random.randint(20, 20) # 结果永远是 20 random.randint(20, 10) # 该语句是错误的,下限必须小于上限

5.2.2 石头剪刀布

# 导入随机工具包 # 注意:在导入工具包的时候,应该将导入的语句,放在文件的顶部 # 因为,这样可以方便下方的代码,在任何需要的时候,使用工具包中的工具 import random # 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3) player = int(input('请输入您要出的拳 石头(1)/剪刀(2)/布(3):')) # 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能 computer = random.randint(1, 3) print('玩家选择的拳头是 %d - 电脑出的拳是 %d' % (player, computer)) # 比较胜负 # 1 石头 胜 剪刀 # 2 剪刀 胜 布 # 3 布 胜 石头 # if (() # or () # or ()): if ((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1)): print('欧耶,电脑弱爆了!') # 平局 elif player == computer: print('真是心有灵犀啊,再来一盘') # 其他的情况就是电脑获胜 else: print('不服气,我们决战到天明!')

6. 循环

6.1 程序执行的三大流程

在程序开发中,一共有三种流程方式:

  • 顺序 —— 从上向下,顺序执行代码

  • 分支 —— 根据条件判断,决定执行代码的 分支

  • 循环 —— 让 特定代码 重复 执行

程序执行的三大流程

6.2 while 循环基本使用

while 语句基本语法:

初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件(计数器 1)

由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序将陷入死循环而无法终止!

计数器 1 :可以通过赋值运算符简化代码的编写。

常见的计数方法有两种,可以分别称为:

  • 自然计数法

    (从 1 开始)—— 更符合人类的习惯

  • 程序计数法

    (从 0 开始)—— 几乎所有的程序语言都选择从 0 开始计数

因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始

6.3 break 和 continue

break 和 continue 是专门在循环中使用的关键字

  • break :某一条件满足时,退出循环,不再执行后续的代码

  • continue :某一条件满足时,不执行后续的代码直接进入下一次循环

  • break 和 continue 只针对

    当前所在循环

    有效

6.4 while 循环嵌套

  • while 嵌套就是:while 里面还有 while,每一次循环中还要做完一个循环。

while 条件 1: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... while 条件 2: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件 2 处理条件 1

示例:

''' 打印 9 行小星星: * ** *** **** ***** ****** ******* ******** ********* ''' # 定义起始行 row = 1 # 最大打印 9 行 while row <= 9: # 定义起始列 col = 1 # 最大打印 row 列 while col <= row: # end = '',表示输出结束后,不换行 # '\t' 可以在控制台输出一个制表符,协助在输出文本时对齐 print('%d * %d = %d' % (col, row, row * col), end='\t') # 列数 1 col = 1 # 一行打印完成的换行 print('') # 行数 1 row = 1

<补>字符串中的转义字符

  • \t 在控制台输出一个

    制表符

    ,协助在输出文本时

    垂直方向

    保持对齐

  • \n 在控制台输出一个

    换行符

制表符 的功能是在不使用表格的情况下在 垂直方向 按列对齐文本

(0)

相关推荐