# 第一章 Python 基础编程

# 1-1 python 开发环境搭建

# 了解 Python (学习大纲)

Pyhton: 互联网应用开发

基本语法:

(1)输入输出:

  1. 输入:用户输入处理
  2. 输出:数据格式话输出

(2)变量:定义与使用

(3)注释:多行与单行

(4)Bug 处理:异常处理

(5)格式化输出:用 format 函数

# Python 概述

应用场景:

  1. 自动化运维和测试
  2. 数据清洗和分析
  3. 人工智能和大数据处理

Python:33 个关键词,7 种基本数据类型

# 计算机资源

分类:

  1. 软件:看得见摸不着
  2. 硬件:看得见且摸得着

软硬件交互:桥梁是交互系统

计算机资源 功能
CPython 使用 C 语言开发
IPython 基于 CPython,增加交互功能
Jython 用 Java 开发,将 Python 代码翻译成 Java 字节码

# Python 开发利器

Python 的开发利器:PyCharm

作用:

  1. Project 管理
  2. 智能提示
  3. 语法高亮
  4. 代码跳转
  5. 调试代码
  6. 解释代码(解释器)

# PyCharm 创建入门

创建项目【选择新建项目(a new project)】

  1. 设置路径至 D,E,F 盘 (避免 C 盘重装风险)
  2. 命名项目
  3. 选择环境,避免使用虚拟环境

创建 Python 文件:

  1. 右击点击项目文件夹
  2. 选择 "新建 Python 文件"(python file)
  3. 命名 (尽量不用中文)

编写入门程序:使用单引号或双引号包围文本 (字符串)

运行代码的方式:

  1. 鼠标右键点击代码文件
  2. 选择运行图标
  3. 快捷键 “Ctrl+Shift+F10”

# PyCharm 常见问题之解析器配置

遇到 Python 文件运行问题时,首先检查解析器配置

通过 Python 的 "setting" 进行解析器的更换与配置

  1. 更换解析器流程:找到配置界面:find-setting
  2. 选择 “a new project”(或类似命名的项目)
  3. 进入 settings 查找配置

配置解析器:

  1. 选择 “interpreter”
  2. 引入所需 Python 版本

确认或更改路径:

  1. 点小齿轮图标
  2. 选择 "添加"
  3. 选择 "已安装" 的 "Python.exe"

# Python 开发环境搭建

# PyCharm 软件本身设置

  1. 软件主题(即软件外观)

    点击 file,再点击 settings

    1743519058605.png

    选择第一个 Behavior, 再选择 Appearance

1743519220679.png

找到主题,选择界面

1743519433836.png

2. 设置字体与字号

在 settings 中找到一个叫 editor 的选择,在选项中选择 font

1743519761773.png

size 代表字体的一个大小

1743519833063.png

3. 关闭项目

点一下 fail 找到 close project,代表把这个项目关闭掉

1743519946790.png

# 1-2 Python 注释与变量

# PyCharm 快捷键与编辑习惯

# Python 注释

注释的原因:为了程序的可读性

在 Python 中有两种注释方式:单行注释和多行注释

注释方式 区别 基本语法
单行注释 只能注释一行内容 #注释内容
多行注释 可以注释多行内容,常用于代码块注释情况 “”“ ”“”

小技巧:

可以使用 Ctrl+/ 来对代码或程序进行快速注释

# PyCharm 常用快捷键

常用快捷键
代码提示 代码提示:输入关键字的前 2~3 个字符(PyCharm 本身自带了一个代码提供的功能),会自动进行代码提示
代码保存 Ctrl+s
撤销与恢复 撤销:Ctrl+Z 恢复:Ctrl+Y
快速注释 Ctrl+/
代码自动格式化 Ctrl+Alt+L
快速复制当前行到下一行 Ctrl+D

在编写 Python 代码时,一定要注意代码缩进问题,在 Python 语言中,缩进代表上下级关系

# Python 变量

量:量是程序运行中的最小单元

变量:

  1. 变量是存储数据的容器
  2. 变量是程序运行中可以变化的量
  3. 变量存储的数据是临时的(永久存储数据:放入数据库中)

变量的作用:简单来说,就是临时存储

# 变量的定义

变量名 = 变量的值(计算机从右往左走)

<!-- 注意:= 两边都要留个空格!变量名可以自定义,但是要满足‘标识符’的命名规则 -->

# ‘标识符’的命名规则

  1. 由数字、字母、下划线组成(例:user_name)
  2. 不能数字开头(例:hello5)
  3. 严格区分大小写(a 和 A 是两个完全不同的变量名)
  4. 不能使用内置关键字作为变量名称

# 内置关键字

1743685933288.png

# 命名习惯

  1. 要做到见名知义
  2. 大驼峰:每个单词首字母都大写
  3. 小驼峰:第二个(含)以后的单词首字母要大写
  4. 下划线

# 变量的定义

先定义后使用

# 1-3 Python 数据类型

# Python 中的 7 种数据类型

数据类型
数值 int (整形) float (浮点形,带小数点) 定义时直接写数字即可,不需要添加任何符号
布尔性 True (真) False (假) 只有两个值,且必须首字母大写
str 字符串 通过一对引号引起来的内容
list 列表 数据可以发生改变
tuple 元素 数据一但定义,其值就不能发生改变了
set 集合 自动去重
dick 字典 查询神器

# 认识 Bug

Bug, 即程序中的错误

# 解决 bug 三步走 (编译型错误,即语法错误)

<!-- 容易查找 -->

  1. 查看错误页面
  2. 看错误的行号
  3. 根据具体的错误,具体分析

# PyCharm 代码调试 (运行时错误)

Debug 工具是 PyCharm IDE 中集成的专门用来调试程序的工具,在这里程序员可以查看程序的执行细节和流程,以方便我们快速找出程序的 Bug

Debug 工具使用二步走:①打断点②Debug 调试

注意:Debug 还可以用于了解程序的运行流程

# 下断点

断点应该放在哪个位置:答: 代码可能出错的代码段的第一行

# 1-4 Python 格式化输出

# Python 中 print 输出函数详解

# 格式化输出

输出:就是程序输出给用户

1743772303495.png

1743772309087.png

print () 函数:主要功能用于实现对变量以及字符串类型数据的直接输出

end 参数,代表当前面的变量或文本信息输出完毕后,追加的内容,默认为 \n,代表换行符

1743772994621.png

1743773009029.png

1743773173194.png

1743773184771.png

# \ 转义字符

\ 转义字符 表示
\t 一个 Tab 键的缩进
\n 换行符,实现自动换行(针对终端)

1743773346355-1.png

1743773352777.png

# 百分号形式的格式化输出

% 格式常见形式如下

格式符号 转换
%s 字符串
%d 有符号的十进制整数
%f 浮点数
%c 字符
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写 ox)
%X 十六进制整数(大写 OX)

# Python 中 input 函数详细讲解

# input () 输入方法

input (' 提示信息 ')

input () 函数,其只要写入一个参数,代表系统的提示信息

1744292593489.png

1744293166855.png

# 输入的特点:

  1. 当程序执行到 'input', 等待用户输入,输入完成之后才能继续向下执行。
  2. 在 Python 中,'linput' 接收用户输入后,一般存储到变量, 方便使用。
  3. 在 Python 中,'input' 会把接收到的任意用户输入的数据都当做字符串处理。

# input 方法注意现象

<!-- 注意:所有由 input () 方法获取的数据都是 “字符串” 类型 -->

# 1-5 Python 运算符

# 使用临时变量实现两个变量值的交换

1744295368074.png

# 学习目标

  1. 掌握常见数据类型转化函数及 其应用
  2. 掌握常见运算符的使用
  3. 了 解条件语句的作用
  4. 掌握 if 结构、 if..else 结构的使用
  5. 掌握 if 嵌套结构
  6. 掌握三目运算符的使用

# Python 数据类型的转换

1744465841637.png

# 四种转换方法

# 数据类型转换函数

函数 说明
int(x[,base]) 将 x 转换为一个整数
float(x) 将 x 转换为一个浮点数
complex(real[,imag]) 创建一个复数, real 为实部, imag 为 虚部]
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(x) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
chr(x) 将一个整数转换为一一个 Unicode 字符
ord(x) 将一个字符转换为它的 ASCII 整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一一个八进制字符串
bin(x) 将一个整数转换为一个二进制字符串

20250412221021.jpg

# 运算符的使用

# 运算符分类

  1. 算数运算符
  2. 赋值运算符(=)
  3. 复合赋值运算符
  4. 比较运算符
  5. 逻辑运算符
运算符 描述 实例
+ 1 + 1 输出的结果是 2
- 1 - 1 输出的结果是 0
* 2 * 2 输出的结果是 4
/ 10 / 2 输出的结果是 5
// 整除 9 // 2 输出的结果是 4
% 取余(取模) 9 % 4 输出的结果是 1
** 2 ** 4 输出的结果是 16
() 小括号,用来提高运算优先级 (1 + 2) * 3 输出的结果是 9

注意:

混合运算符优先级顺序:()高于 ** 高于 * /// % 高于 + -

20250412224709.jpg

# 赋值运算符

20250412225318.jpg

# 复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 c += a 等价于 c = c + a
-= 减法赋值运算符 c -= a 等价于 c = c - a
*= 乘法赋值运算符 c *= a 等价于 c = c * a
/= 除法赋值运算符 c /= a 等价于 c = c /a
//= 整除赋值运算符 c //= a 等价于 c = c //a
%= 取余赋值运算符 c %= a 等价于 c = c % a
**= 幂赋值运算符 c *= a 等价于 c = c ** a

注意:算数运算符的优先级 > 复合赋值运算符的优先级

# 比较运算符

应用场景:两个变量大小的比较,其最终返回结果是一个 bool 类型的值,True 或 False

运算符 描述 实例
== 判断相等。如果两个操作数的结果相等,则条件结果为真 (True),否则条件结果为假 (False) 如 a=3,b=3 则 (a==b) 为 True
!= 不等于。如果两个操作数的结果不相等,则条件结果为真 (True),否则条件结果为假 (False) 如 a=1,b=3, 则 (a!=b) 为 True
> 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 如 a=7,b=3, 则 (a>b) 为 True
< 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 如 a=7,b=3, 则 (a<b) 为 True
>= 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 如 a=7,b=3, 则 (a<b) 为 False 如 a=3,b=3 则 (a>=b) 为 True
<= 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 如 a=3,b=3 则 (a<=b) 为 True

# 逻辑运算符

逻辑运算符:逻辑与、或、非,其最终返回的结果也是一个布尔类型的值,True 或 Flase。另外在实际工作中,逻辑运算符也主要和 if 分支结构相结合。

运算符 描述
and x and y 如果 x 为 Flase,x and y 返回 Flase,否则它返回 y 的值 True and Flase, 返回 Flase
or x or y 如果 x 为 True,x or y 返回 True,否则它返回 y 的值 True or Flase, 返回 True
not not x 如果 x 为 True,not x 返回 Flase; 如果 x 为 Flase,not x 返回 True not True 返回 Flase;not Flase 返回 True;

<img src="https://i.postimg.cc/3NLC1GvL/20250413201901.jpg" alt="20250413201901.jpg" />

# 短路运算

短路运算的原则:

  1. 表达式 1 and 表达式 2, 如果表达式 1 条件为真,则最终的运算结果由右边的表达式 2 来决定。如果表达式 1 条件为假,则最终结果为假。其右边的表达式 2 不需要在进行运算。
  2. 表达式 1 or 表达式 2, 如果表达式 1 为真,则最终的运算结果由表达式 1 来决定,为真。如果表达式 1 为假,则最终结果由表达式 2 来决定。 如果表达式 2 为真,则最终结果为真,如果表达式 2 为假,则最终结果为假。

注意:

  1. Python 把 0、空字符串和 None 看成 False, 其它数值和非空字符串都看成 True
  2. 在 Python 语言中,空格也算一个字符(非空)
  3. 如果逻辑运算符的两边,非纯表达式,则返回结果并不是 bool 布尔类型的值,而是返回决定整个表达式结果的那个值

20250413205007.jpg

# 运算符的优先级

运算符说明 Python 运算符 结合性
小括号 ()
索引运算符 x [i] 或 x [i1:i2 [:i3]]
属性访问 x.attribute
乘方 **
按位取反 ~
符号运算符 + (正号)、-(负号)
乘除 *、/、//、%
加减 +、-
位移 >>、<<
按位与 &
按位异或 ^
按位或 |
比较运算符 ==、!=、>、>=、<、<=
is 运算符 is、is not
in 运算符 in、not in
逻辑非 not
逻辑与 and
逻辑或 or
逗号运算符 exp1,exp2

注意:逻辑运算符优先级顺序为从高到低

# 1-6 Python 分支语句

# if 语句详解

基本语法:

if 条件判断:
    则执行某段代码...
print()

20250415232558.jpg

20250415233244.jpg

注意:只要与 if 语句它们有缩进关系的,系统都认为下面的代码就是 if 语句的一部分

# if...else (相当于必须要二选一) 语句详解

基本语法:

if 条件判断:
   当条件判断为True时,则执行这个语句段
else:
    当条件判断为Flase时,则执行这个语句段

20250416205303.jpg

20250416205413.jpg

# if...elif...else 多重分支语句

if...elif...else 多重判断语句

if 条件1:
   条件1成立执行的代码1
   条件1成立执行的代码2
   ......
elif 条件2:
   条件2成立执行的代码1
   条件2成立执行的代码2
   ......
......
else:
   以上条件都不成立执行的代码

20250416222507.jpg

20250416222620.jpg

20250416222722.jpg

# if...elif...else 多重分支语句相关案例

bmi 值:身体质量指数

20250416225135.jpg

# if 嵌套结构

基本语法:

if 外层条件判断:
   #如果条件为 True,则执行以下语句段
   if 内层条件判断:
      #如果内层条件为 True,则执行以下语句段
else:
     #如果条件为 Flase,则执行以下语句段

编写时要尊重一个原则:先编写外层判断,所有语句编写完成后,再编写内层条件判断结构

20250418214556.jpg

20250418214820.jpg

# 出拳案例

20250418232340.jpg

<img src="https://i.postimg.cc/YqhZ6xTW/20250418232546.jpg" alt="20250418232546.jpg" style="zoom:150%;" />

20250418232722.jpg

20250418232837.jpg

此时,该代码不是很完整,他不能随机生成电脑的出拳

# Python 中的随机数

引用函数

20250418234842.jpg

仍以出拳为例

20250418234543.jpg

# 三目运算符

三目运算符也叫三元运算符

主要作用:就是用于简化 if...else... 语句

基本语法:

if 条件判断:
   #语句段1
else:
   #语句段2

转换为三目运算符:

语句段1 if 条件判断 else 语句段2

20250419001702.jpg

可利用三目运算符将以上代码简化

20250419002138.jpg

# Python 分支语句练习题

# 三角形案例

20250419193559.jpg

# 小组赛案例

20250419202742.jpg

# 1-7 while 循环

循环中的两大关键词:comtinue 和 break

# 循环基本结构与循环三步走

循环的作用:让代码高校的重复执行

循环的分类:在 Python 中,循环结构分为 while 和 for 两种

while 循环基本语法

while 条件:
   条件成立重复执行的代码1
   条件成立重复执行的代码2
   ......

while 循环三步走:

  1. 定义初始计数器 i = 0

  2. 编写循环条件 while i <100: => 目的:到底这个循环在什么时候结束

  3. 在循环体内部对计数器进行更新操作(一般是 + 1)

    20250419230127.jpg

# while 循环案例

# 案例 1

20250420212428.jpg

# 案例 2

20250420213746.jpg

20250420214234.jpg

# 案例 3

20250420215130.jpg

# 循环中的两大关键词

break: 终止整个循环,强制结束

continue: 停止当前程序,继续下一个程序

# break

20250420220818.jpg

# continue

20250420221943.jpg

20250420222245.jpg

# while 中的死循环

概念:在编程中一个靠自身控制无法终止的程序称为 “死循环”

20250420222926.jpg

20250420223703.jpg

# while 循环案例:猜数字

20250421221215.jpg

# 循环嵌套基本语法与执行流程

while 循环嵌套:就是一个 while 里面嵌套一个 while 的写法,每个 while 和之前的基本语法是相同的

while 循环嵌套方法:

第一步:定义外层循环计数器
i = 0或1
第二步:编写外层循环条件
while i < 3:
    第四步:定义内层循环计数器
    j = 0或1
    第五步:编写内层循环条件
    while j < 3:
        #核心代码
        第六步:在内层循环体中更新计数器的值
        j += 1
    第三步:在外层循环体中更新计数器的值
    i += 1

20250421223007.jpg

执行流程:外层循环 1 次,内层循环 n 次

循环嵌套的总次数 = 外层循环次数 * 内层循环次数

# 1-8 for 循环及案例

# for 循环基本语法及其应用场景

for 临时变量 in 序列:
  重复执行的代码1
  重复执行的代码2
  ......

20250421224947.jpg

# for 与 range 函数相关案例

range () 函数可以理解为一个序列结构

基本语法:

range(stop)
range(start,stop,[step])
理解 案例
start 计数从 start 开始。默认是从 0 开始 range (5) 等价于 range (0,5)
stop 计数到 stop 结束,但不包括 stop range (0,5) 是 [0,1,2,3,4] 没有 5
step 步长,默认为 1 range (0,5) 等价于 range (0,5,1)

range (5) => 生成一个序列类型的数据 => [0,1,2,3,4]

range (0,5) => 0 代表开头,5 代表结尾(但不包含 5)

range 其实很简单,只顾头来尾不管

range (0,5,1) 0-5 之间的数字,每次 + 1 => 0 1 2 3 4

range (0,5,2) 0-5 之间的数字,每次 + 2 =>0 2 4

20250422213421.jpg

20250422213718.jpg

# 用户登录案例演示

break:

20250422214805.jpg

continue:

20250422215243.jpg

20250422222651.jpg

# 1-9 循环 else

# while 循环中的 else 语句结构

循环可以和 else 配合使用,else 下方缩进的代码指的是当循环正常结束之后执行的代码

正常结束:没有遇到 break

不正常结束:break

while 循环 else 结构基本语法

while 条件:
  条件成立重复执行的代码
else:
  循环正常结束之后执行的代码

20250422224325.jpg

while...else 遇上 break (终止)

20250422224719.jpg

while...else 遇上 continue (继续)

20250422225002.jpg

# for 循环中 else 的结构

基本语法

for临时变量in序列:
  重复执行的代码
  ...
else:
  循环正常结束之后要执行的代码

所谓 else 指的是循环正常结束之后要执行的代码,即如果是 break 终止循环的情况,else 下方缩进的代码将不执行

20250425220744.jpg

退出循环的两种方式

  1. 遇见 break

    20250425221204.jpg

  2. 遇见 continue

    20250425221548.jpg

# 综合案例:报数字游戏

20250425223152.jpg

# 1-10 字符串定义切片

# 字符串定义与输入输出

定义:

  1. 一对引号字符串
  2. 三引号字符串(支持换行)

字符串是 Python 中最常用的数据类型。我们一般所有引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

注意:控制台显示结果为 '<class str>', 即数据类型为 str(字符串)

20250425224841.jpg

输入

在 Python 代码中,我们可以使用 input () 方法来接收用户的输入信息。

记住:在 Python 中,input () 方法返回的结果是一个字符串类型的数据。

name = input(' 请输入您的姓名: )
age = input('请输入您的年龄: ')
address = input('请输入您的住址: ')
print(name, age, address)
  1. input () 可以阻断当前正在执行的代码,让系统处于等待状态,直到用户输入完成
  2. input () 方法接收到的所有数据,返回的数据类型多少字符串

输出

普通输出

print(变量名称)
print(变量名称1,变量名称2,变量名称3)

格式化输出

  1. 百分号 (Python2 和 Python3)

    name = input('请输入您的姓名:')
    age = int(input('请输入您的年龄: ')
    address = input(' 请输入您的住址:' )
    
    print('我的名字是当s,今年%d岁了,家里住在%s...% (name, age, address))
    
  2. format 方法 (Python3)

    name = input(' 请输入您的姓名: ')
    age = input(' 请输入您的年龄: ')
    address = input(' 请输入您的住址: ')
    
    print('我的名字是{},今年()岁了,家里住在{}...'.format(name. age, address)
    
  3. f 形式 (Python3)

name = input('请输入您的姓名: ')
age = input(' 请输入您的年龄: ')
eddress input( '请输入您的住址:')

print(f'我的名字是 {name},今年{age}岁了, 家里住在{address}...')