3.1 Python基础语法与条件判断#
学习目标#
- 知道Python语言的优缺点
- 掌握Python环境搭建
- 掌握Python基础语法
- 熟悉Python判断结构
一、【熟悉】Python概述与安装#
学习目标#
知道Python创始时间和创始人 知道Python的优缺点
1 为什么要学习Python#
① 技术趋势
Python自带明星属性,热度稳居编程语言界前三
https://www.tiobe.com/tiobe-index/
https://pypl.github.io/PYPL.html
② 简单易学
开发代码少,精确表达需求逻辑;33个关键字,7种基本数据类型;语法规则简单,接近自然语言。
③ 应用广泛
Python语言涉及IT行业70%以上的技术领域

2 Python语言的诞生#
1989年,为了打发圣诞节假期,龟叔(吉多·范·罗苏姆)开始写Python语言的编译器 ; 1991年,第一个Python编译器诞生 Python这个名字,来自龟叔所挚爱的电视剧Monty Python's Flying Circus (蒙蒂·蟒蛇的飞行马戏团)

3 Python语言的优缺点#
优点 简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,Python的这种代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 易学:就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。 免费、开源:Python开源的。简单地说,你可以自由地阅读它的源代码、对它做改动、这是为什么Python如此优秀的原因之一,它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。 可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。 丰富的库:Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。 缺点 Python语言非常完善,没有明显的短板和缺点,唯一的缺点就是执行效率慢,这个是解释型语言所通有的,同时这个缺点也将被计算机越来越强大的性能所弥补。
二、【掌握】Python解释器#
学习目标#
知道Python解释器的作用 知道Python解释器的版本 清楚Anaconda, Miniconda 和 Conda 的关系与区别
1 Python解析器的作用#
demo.py
print('Hello World')
由于Python属于高级语言,其并不能直接在计算机中运行,因为缺少Python语言的运行环境:Python解析器
Python解析器的作用:就是把Python代码转换为计算机底层可以识别的机器语言,如0101...
2 Python解析器的种类#
① CPython,C语言开发的解释器[官方],应⽤广泛的解释器。 ② IPython,基于CPython的一种交互式解释器。 ③ 其他解释器 PyPy,基于Python语言开发的解释器。 JPython,运⾏在Java平台的解释器,直接把Python代码编译成Java字节码执⾏。 IronPython,运⾏在微软.Net平台上的Python解释器,可直接把Python代码编译成.Net的字节码。
3 Python解释器版本#
在生产环境中,我们⼀般不会选择最新版本的Python,因为可能会存在未知Bug,所以⼀般强烈建议大家在选择软件版本时,选择市场常用的软件版本 Python3.8及以上 ... Python3.8、Python3.9、Python3.10、Python3.11 、Python3.12、Python3.13 ... 原生版本下载地址:https://www.python.org/downloads
4 Anaconda安装Python解析器#
4.1 Anaconda介绍#
Anaconda 是一个开源的 Python/R 数据科学平台 ,它极大地简化了包管理和环境管理。你可以把它理解为一个“超级工具箱”,里面不仅包含了Python本身,还预装了超过1500个用于数据科学(如数据分析、机器学习、可视化)的流行库和工具。 此外,大家要清楚Anaconda, Miniconda 和 Conda 的关系与区别
- Conda: 是底层的包管理和环境管理工具本身 。它是一个独立的命令行工具。
- Anaconda: 是一个“全家桶”发行版。它包含了Conda、Python、1500+个数据科学库以及Navigator等图形化工具 。体积较大(约500MB-1GB)。
- Miniconda: 是一个“迷你版”的Anaconda。它只包含Conda、Python和少量核心依赖 。体积非常小。
如何选择?
- 初学者/希望快速上手的用户: 推荐直接安装 Anaconda 。省时省力,无需担心初始配置。
- 高级用户/磁盘空间有限/追求定制化: 推荐安装 Miniconda 。你可以从一个干净的基础开始,只安装你需要的包,从而保持环境的精简。
4.2 Anaconda安装#

4.3 Anaconda测试#
打开开始菜单点击Anaconda Powershell Prompt, 分别输入 conda -V 和 python -V , 能出现版本号, 即为安装成功.

三、【掌握】PyCharm开发工具#
学习目标#
完成PyCharm软件安装 实现PyCharm软件与Anaconda整合
1 为什么要安装PyCharm#
工欲善其事必先利其器
在Python的开发领域,其开发工具非常非常多,EditPlus、Notepad++、Sublime Text3、Visual Studio Code、PyCharm(目前功能最强大的IDE)

2 PyCharm的主要作用#
PyCharm是⼀种Python IDE (集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的⼯具,内部集成的功能如下: Project管理 智能提示 语法高亮 代码跳转 调试代码 解释代码(解释器) 框架和库 ......
3 PyCharm的分类#
PyCharm一共有两个版本:专业版(收费) 与 社区版(免费、开源)
在基础班,PyCharm社区版足够我们使用,绰绰有余。
4 下载PyCharm#
下载地址:https://www.jetbrains.com/pycharm/download/#section=windows

5 PyCharm安装#
第一步:双击PyCharm软件安装包,进行软件安装
第二步:设置软件的安装路径,理论上没有任何要求,但是建议放在除C盘以外的盘符
第三步:PyCharm基本设置,创建桌面图标与.py文件关联

6 PyCharm软件的使用#
6.1☆ 创建Python项目#
什么是项目?其实我们在实际开发中,每次参与一个工作的开发都是一个项目的开发过程。所以使用PyCharm的第一件事就是学习Python项目的创建过程。
第一步:创建项目
第二步:设置项目路径,必须放在C盘以外的盘符(非常重要!!!)
配置完成后,单机Create创建Python项目。
6.2☆ 新建文件与代码书写#

编写Hello World
print('Hello World')
6.3☆ 运行代码#
运行结果:

6.4☆ 设置或更换Python解析器#
打开File文件,找到Settings设置,如下图所示:更换Python解析器

6.5☆ PyCharm软件本身设置#
① 软件主题(软件未来的样式)
② 编码字体的设置
③ 代码字号的设置(文字大小)
打开File文件 => Settings设置,找到界面设置:
主题设置:
字体与字号设置:
字体设置:
字号设置:

6.6☆ 打开项目与关闭项目#
打开项目:本身项目已经存在了,我们直接打开。
选择项目目录(文件夹)即可,如下图所示:
① This Window => 覆盖当前项⽬,从⽽打开目标项目
② New Window => 在新窗⼝打开,则打开两次PyCharm,每个PyCharm负责一个项⽬
③ Attach => 把两个项目合并在一起,放在同一个窗口中
关闭项目:对已经运行项目进行关闭操作。

四、【熟悉】Python注释与快捷键#
学习目标#
了解Python注释作用 掌握常见的注释格式 熟练使用常见的快捷键
1 注释的作用#
首先强调一件事:Python代码 => Python解析器 => 机器语言,但是注释经过了Python的解释器并不会解析与执行。因为其主要就是进行代码的注释。
注释作用:提高代码的阅读性
在我们编写Python程序时,为了了提高程序的可读性,强烈建议大家为核心代码添加注释信息。
2 Python注释语法#
2.1☆ 单行注释#
单行注释,以"#"(Shift + 3)号开头,只能注释一行内容
# 注释内容
示例代码: 第一种:代码行的上面
# 输出Hello World字符串
print('Hello World')
第二种:放在代码的后面(代码后面保留2个空格)
print('Hello World') # 输出Hello World字符串
2.2☆ 多行注释#
多行注释:可以同时注释多行代码或程序,常用于代码块的注释 基本语法:
"""
注释内容
第一行
第二行
第三行
"""
或
'''
注释内容
第一行
第二行
第三行
'''
示例代码:
"""
Hi, 大家好
我是黑马程序员的小伙伴
从今天开始,我们将一起学习Python这门语言
"""
'''
Hi, 大家好
我是黑马程序员的小伙伴
从今天开始,我们将一起学习Python这门语言
'''
print('Hi, 大家好')
print('我是黑马程序员的小伙伴')
print('从今天开始,我们将一起学习Python这门语言')
2.3☆ PyCharm注释小技巧(快捷键)#
在PyCharm中,我们可以使用Ctrl + /斜杠来对代码或程序进行快速注释。
3 代码提示#
在PyCharm中,当我们输入Python关键字中的前2~3个字符,其会自动进行代码提示。这个时候,我们只需要按回车即可以快速的输入某个内容。

4 代码保存#
编写代码时,一定要养成一个好的习惯,使用Ctrl + S快速对代码进行保存操作。
当然现在开发工具很多都已经有自动保存功能~
5 撤销与恢复#
如果不小心删除了某行代码,这个时候我们可以快速按Ctrl + Z就可以快速进行恢复。每按一次就撤销一次,如果撤销多了,怎么办?
答:还可以通过Ctrl + Y进行恢复操作
6 格式代码#
如果写的代码,很乱,不方便阅读,那就有事没事儿就按Ctrl + ALT + L 格式化代码
7 快速复制代码#
如果光标所在行代码,下面要使用多次,可以按 Ctrl + D 快速复制光标所在行代码
小结#
Q1:为什么要给程序写注释?
- 提高代码的阅读性
Q2:Python中注释有几种常见格式,特点是什么
- 单行注释,以"#"号开头,只能注释一行内容
- 多行注释:可以同时注释多行代码或程序,常用于代码块的注释
五、【掌握】Python中的变量#
学习目标#
理解变量的定义与使用 熟悉变量的命名规则和数据类型
1 引入变量的概念#
那什么是变量呢? ① 变量是存储数据的容器 ② 变量在程序运行过程中是可以发生改变的量 ③ 变量存储的数据是临时的
2 变量的定义#
基本语法:
变量名称 = 变量的值
注:等号的两边都要保留一个空格,其实Python中建议符号的两边尽量都要保留一个空格
说明:在Python程序中,这个等号和日常生活中的等号不太一样,其有一个专业名词:赋值运算符,其读法:要从右向左读,把变量的值通过 = 赋值给左边的变量。
3 变量的命名规则#
标识符命名规则是Python中定义变量名称时一种命名规范,具体如下:
① 由数字、字母、下划线(_)组成
② 不能数字开头
③ 严格区分⼤小写
④ 不能使⽤内置关键字作为变量名称
举个栗子:
① abc、abc123、_abc、hello(合理)
② 123abc、@abc、abc-123(不合理)
③ _(下划线) => 请问这可以是一个变量名称么?答:可以
for _ in range(10):
...
注意:在Python变量命名时,不建议使用_开头,因为其与后面要学习的私有属性想冲突 ④ 变量abc和变量ABC是同一个变量么?答:不一样,这是两个完全不同的变量 ⑤ 记不住Python关键字怎么办?答:借助于help()方法
>>> help('keywords')
4 推荐变量的命名规则#
① 变量命名一定要做到见名知义。 ② 大驼峰:即每个单词首字母都大写,例如: MyName 。 ③ 小驼峰:第二个(含)以后的单词首字母大写,例如: myName 。 ④ 下划线:例如: my_name 。
5 变量的定义与调用#
在Python中,记住:变量一定要先定义,后使用,否则会报错。 定义:
name = 'itheima'
address = '北京市顺义区京顺路99号'
调用:
print(name)
print(address)
或
print(name, address)
6 变量的定义与使用常见问题#
① 变量与字符串如何区别: 在Python中,如果要赋值的内容添加了单引号或者双引号,其就是Python中的一种数据类型:叫做字符串(日常生活中的文本信息) ② print打印变量时,喜欢为其添加引号
print(name) # 输出变量name对应的值
与
print('name') # 输出'name'这个字符串
③ PyCharm快捷键 => Ctrl + Alt + L => 代码格式化
7 变量的数据类型#
变量的定义非常的简单,但是很多小伙伴可能会想:变量除了存储这种字符类型的数据以外,还能存储其他类型的数据么?其实,在 Python中,我们为了应对不同的业务需求,也会把数据分为不同的类型,如下图所示:
面试题:请手写出Python中的7种数据类型?
答:数值类型、布尔类型、字符串类型、列表类型、元组类型、集合类型、字典类型
今天我们只需要了解前3种即可。
问题:如何判断一个变量到底是什么类型?
答:① 使用type(变量名称)方法,返回变量的数据类型 ② isinstance(变量名称,数据类型),只能返回True或False(真的还是假的)
7.1 数值类型#
数值类型就是我们日常生活中的数字,数字又分为两种形式:整数 与 小数(带小数点) 整数类型:int类型 小数类型:float类型 案例1:定义一个人的信息,姓名:Tom、年龄18岁
name = 'Tom'
age = 18
print(type(age))
案例2:定义一个超市收银系统,写入一个名称:大白菜,价格:3.5
name = '大白菜'
price = 3.5
print(type(price))
7.2 布尔类型#
布尔类型是与逻辑相关一种数据类型,只有两个值:True(真)与False(假) 案例1:手工定义一个flag变量,其值为True
flag = True
print(flag)
print(type(flag))
7.3 字符串类型#
在Python变量定义中,如果其赋值的内容是通过单引号或双引号引起来的内容就是字符串str类型。
msg = '这家伙很懒,什么都没有留下...'
print(type(msg))
7.4 其他类型(后续学习)#
# 1、list列表类型
list1 = [10, 20, 30, 40]
print(type(list1))
# 2、tuple元组类型
tuple1 = (10, 20, 30, 40)
print(type(tuple1))
# 3、set集合类型:去重
set1 = {10, 20, 30}
print(type(set1))
# 4、dict字典类型:查询、搜索
dict1 = {'name':'itheima', 'age':18}
print(type(dict1))
小结#
Q1:Python变量命名规则是什么?
- 由数字、字母、下划线(_)组成
- 不能数字开头
- 严格区分⼤小写
- 使⽤内置关键字作为变量名称
Q2:Python变量有哪些数据类型?
- 数值型、布尔型、字符串、列表、元组、集合、字典
六、【掌握】Python的输入与输出#
学习目标#
掌握Python中的格式化输出方法,百分号格式化、format方法和f格式化 理解转义字符的使用 掌握Python中的输入方法,理解input()函数的使用及其返回值的类型
1 格式化输出#
目前为止,我们所有的输出都是直接通过print(变量名称)形式直接打印的。但是实际工作中,我们可能需要对变量的输出进行格式化操作(按照一定格式进行输出)。 变量的格式化
2 百分号格式化输出#
基本语法:
...
print(变量名称)
print('字符串%格式' % (变量名称))
print('字符串%格式 %格式 %格式' % (变量名称1, 变量名称2, 变量名称3))
%格式常见形式如下:
| 格式符号 | 转换 |
|---|---|
| %s | 字符串 |
| %d | 有符号的十进制整数 |
| %f | 浮点数 |
| %c | 字符 |
| %u | 无符号十进制整数 |
| %o | 八进制整数 |
| %x | 十六进制整数(小写ox) |
| %X | 十六进制整数(大写OX) |
| %e | 科学计数法(小写'e') |
| %E | 科学计数法(大写'E') |
| %g | %f和%e的简写 |
| %G | %f和%E的简写 |
| 案例:定义两个变量name='itheima', age=18,按照如下格式进行输出:我的名字是itheima,今年18岁了。 | |
![]() |
|
| 案例:定义两个变量title='大白菜',price=3.5,按照如下格式进行输出:今天蔬菜特价了,大白菜只要3.5元/斤。 |
title = '大白菜'
price = 3.5
# 格式化输出“今天蔬菜特价了,大白菜只要3.5元/斤。"
print("今天蔬菜特价了,%s只要%.2f元/斤。" % (title, price))
其实除了%f可以设置小数点位数以外,%d也可以填充序号。 案例:定义两个变量id=1,name='itheima',按照如下格式进行输出:姓名itheima,学号000001
id = 1
name = 'itheima'
print("姓名%s,学号%06d" % (name, id))
3 format方法格式化输出#
基本语法:
...
print('字符串{}'.format(变量名称1))
print('{}字符串{}'.format(变量名称1, 变量名称2))
案例:定义两个变量,name='孙悟空',mobile='18878569090',按照以下格式进行输出"姓名:孙悟空,联系方式:18878569090"
name = '孙悟空'
mobile = '18878569090'
print("姓名:{},联系方式:{}".format(name, mobile))
4 format方法简写形式格式化输出(推荐)#
在Python3.6以后版本,为了简化format输出操作,引入了一个简写形式:
name = '孙悟空'
mobile = '18878569090'
print(f'姓名:{name},联系方式:{mobile}')
5 格式化输出中的转义符号#
在字符串中,如果出现了\t和\n,其代表的含义就是两个转义字符
\t :制表符,一个tab键(4个空格)的距离
\n :换行符
案例:
print('*\t*\t*')
print('hello\nworld')
特别说明:默认情况下,每个print()方法执行完毕后,都会输出一个\n换行符。如果不想让print()方法换行,可以添加一个end参数
print('*', end='')
6 为什么需要输入#
到目前为止,我们所有的程序都只能把数据输出给用户。但是实际工作中,我们经常输入获取用户的输入信息,如银行系统中的密码输入、淘宝中的用户登录验证。

7 input()输入方法#
在Python中,如果想让Python程序接受用户的输入信息,可以使用input()方法 基本语法:
input()
但是往往只有input()方法,其意义不大,我们还应该使用一个变量来临时接受用户的输入,已方便后期的操作。
变量名称 = input('提示信息:')
案例:银行系统中的,输入密码的过程
password = input('请输入您的银行卡密码:')
print(f'您输入的银行卡密码为:{password}')
8 input()方法重要事项#
记住:所有由input()方法获取的数据都是==“字符串”==类型
name = input('请输入您的姓名:')
age = input('请输入您的年龄:')
print(type(name)) # <class 'str'>
print(type(age)) # <class 'str'>
总结: ① input()可以用于接收由外部设备输入的信息,但是如果用户没有输入任何内容,则input()函数会中止当前代码的继续执行,处于等待状态,直到用户输入结束。 ② 所有由input()方法获取的数据都是==“字符串”==类型
小结#
Q1:Python有几种格式化输出方式?
- 百分比格式化
- format格式化
- f格式化
Q2:input方式输入特点是什么?
- 用户不输入任何内容,input函数会中止代码继续执行
- input函数获取的数据都是字符串类型
七、【掌握】Python数据类型转换#
学习目标#
掌握常见的Python数据类型转换
1 使用Python实现超市的收银系统#
Python:
name = input('请输入您要购买商品名称:')
id = input('请输入您要购买商品编号:')
price = input('请输入您要购买的商品价格:')
print(f'您购买了{name},商品编号为{id},商品价格为{price},欢迎下次光临!')
以上程序虽然可以按照上图完成程序的正常输出,但是遗留了一个非常严重的问题:这个价格price变量无法参与数学运算(如买了两个奥利奥,应该是18.5 * 2),原因在于input()方法返回的所有的结果都是str字符串类型。 怎么解决以上问题呢? 答:使用==数据类型转换==
2 了解Python数据类型的转换方法#
| 函数 | 说明 |
|---|---|
| int(x) | 将x转换为一个整数 |
| float(x) | 将x转换为一个浮点数 |
| complex(real [,imag ]) | 创建一个复数,real为实部,imag为虚部 |
| str(x) | 将对象 x 转换为字符串 |
| repr(x) | 将对象 x 转换为表达式字符串 |
| eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
| tuple(s) | 将序列 s 转换为一个元组 |
| list(s) | 将序列 s 转换为一个列表 |
| chr(x) | 将一个整数转换为一个Unicode字符 |
| ord(x) | 将一个字符转换为它的ASCII整数值 |
| hex(x) | 将一个整数转换为一个十六进制字符串 |
| oct(x) | 将一个整数转换为一个八进制字符串 |
| bin(x) | 将一个整数转换为一个二进制字符串 |
| 案例1:把用户输入的幸运数字,转换为整型 |
num = input('请输入您的幸运数字:')
print(type(num))
# 数据类型转换,把str字符串类型转换为int类型
print('-' * 20)
num = int(num)
print(type(num))
以上代码还可以简写为:
num = int(input('请输入您的幸运数字:'))
print(type(num))
案例2:多种数据类型转换
# 1、整型转浮点类型 int => float
num1 = 10
print(float(num1))
print(type(float(num1)))
print('-' * 20)
# 2、浮点类型转换为整型 float => int,浮点转整型,其小数点后的数据会丢失!!!
num2 = 18.88
print(int(num2))
print('-' * 20)
# 3、把字符串类型转换为整型或浮点类型
str1 = '20'
str2 = '10.88'
print(type(int(str1)))
print(type(float(str2)))
案例3:eval()方法的使用,把字符串中的数字转换为原数据类型
price = input('请输入您购买商品的价格:')
print(eval(price))
print(type(eval(price)))
str1 = '10' 经过eval(str1) 转换为int类型 str2 = '10.88' 经过eval(str1) 转换为float类型
小结#
Q1:Python数据类型转换方法一共学了几种方式?
- int() :转整型
- float() :转浮点类型
- str() :转字符串类型
- eval() :把字符串转换为原数据类型
记住:① 如果一个字符串 * 数字,代表对这个字符串进行复制操作
② 当float浮点类型转换为int整型时,其小数点后面的数据会丢失,一定要记住这个特性。
③ 字符串转数值类型,字符串中的数据必须是有意义的数值
八、【掌握】Python运算符#
学习目标#
掌握Python算术运算符 熟练使用逻辑运算符与赋值运算符 了解短路运算符
1 算术运算符#
所谓的算数运算符就是我们日常生活中的加减乘除等待。
| 运算符 | 描述 | 实例 |
|---|
- | 加 | 1 + 1 输出结果为 2
- | 减 | 1 - 1 输出结果为 0
- | 乘 | 2 * 2 输出结果为 4
/ | 除 | 10 / 2 输出结果为 5
// | 整除 | 9 // 4 输出结果为 2
% | 取余(取模) | 9 % 4 输出结果为 1
** | 幂指数 | 2 ** 4 输出结果为 16,即2的4次方,2 * 2 * 2 * 2
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9
案例1:了解一下算术运算符
num1 = 10
num2 = 2
# 四则运算 + - * /
print(f'加:{num1 + num2}')
print(f'减:{num1 - num2}')
print(f'乘:{num1 * num2}')
print(f'除:{num1 / num2}')
案例2:和其他编程语言不太相同的几个算术运算符
num1 = 20
num2 = 6
num3 = 5
# 1、整除
print(f'整除:{num1 // num2}')
# 2、求余数
print(f'余数:{num1 % num2}')
# 3、幂指数
print(f'幂指数:{num2 ** 3}')
# 4、圆括号
print(f'优先级:{(num1 + num2) * num3}')
2 赋值运算符#
| 运算符 | 描述 | 实例 |
|---|---|---|
| = | 赋值 | 将=右侧的结果赋值给等号左侧的变量 |
| 案例1:把某个值赋值给某个变量 |
num = 10
案例2:多个变量同时进行赋值操作
n = 5
f = 10.88
s = 'hello world'
简写为:
n, f, s = 5, 10.88, 'hello world'
print(n)
print(f)
print(s)
案例3:多个变量赋予相同的值
a = 10
b = 10
简写为:
a = b = 10
3 复合赋值运算符#
复合赋值运算符 = 算术运算符 结合 赋值运算符

复合赋值运算符的计算顺序 = 先执行算术运算符,执行完毕后,把结果在赋值给左边的变量。 案例:AA制餐厅 需求: 假设你是一位很棒的AA制餐厅的服务员,你的任务是计算每位顾客的应付金额。 输入顾客人数,并赋值给total_friends变量。 输入总账单数值,并赋值配给 total_bill 变量。 在账单费用上加上20%的税,并计算最终账单总额均摊给顾客金额,然后打印
需求分析:
#第一步:获取用户输入顾客人数
#第二步:输入总账单数值
#第三步:计算加上20%税后的总账单
#第四步:计算每位顾客的应付金额
#第五步:打印每位顾客的应付金额
# 1.输入顾客人数
total_friends = int(input("请输入顾客人数: "))
# 2.输入总账单数值
total_bill = float(input("请输入总账单数值: "))
# 3.计算加上20%税后的总账单
total_bill_with_tax = total_bill * 1.20
# 4.计算每位顾客的应付金额
amount_per_person = total_bill_with_tax / total_friends
# 5.打印每位顾客的应付金额
print(f"每位顾客的应付金额是: {amount_per_person:.2f}元")
4 比较运算符#

特别注意:当我们使用比较运算符对两个变量进行比较时,其返回一个布尔类型的值。 案例:两个数大小的比较
num1 = 10
num2 = 20
print(num1 > num2) # False
print(num1 < num2) # True
print(num1 >= num2) # False
print(num1 <= num2) # True
print(num1 == num2) # False
print(num1 != num2) # True
5 逻辑运算符#

not就是取反,只有一个表达式
not 表达式,如果表达式为True,则not以后就返回False。反之,则返回True。 and :逻辑与,只有当两边的表达式全部为真,则最终结果返回为真,否则返回为假。 x :False y :False result = x and y or :逻辑或,只要有一方为真,则整个表达式的返回结果就为真。除非两边的表达式都为假,则整个结果返回为假。 result = x or y 讲个非诚勿扰的小故事: ① 女孩子要求比较高,要求男孩子必须要有房且有车
表达式1 and 表达式2
当表达式1为True且表达式2为True时,则整个表达式返回结果为True
当表达式1或表达式2中有一个表达式为假,则整个表达式返回结果为False
有房 and 有车 则 牵手成功
有房 and 没车 则 牵手失败
没房 and 有车 则 牵手失败
② 女孩子要求一般,要求男孩子有房或者有车即可
表达式1 or 表达式2
当表达式1为True或表达式2为True时,则整个表达式返回结果为True
当表达式1与表达式2都为False时,则整个表达式才会返回False
有房 or 有车 则 牵手成功
有房 or 没车 则 牵手成功
没房 or 有车 则 牵手成功
没房 or 没车 则 牵手失败
逻辑与、或、非,其最终的返回结果也是一个布尔类型的值,True或False。另外在实际工作中,逻辑运算符也主要和if分支结构相结合。 案例:
a = 1
b = 2
c = 3
print((a > b) and (b > c)) # False
print((a > b) or (b > c)) # False
print((a < b) or (b > c)) # True
print(not (a > b)) # True
6 运算符_综合案例#
案例需求#
假设你是一位很棒的AA制餐厅的服务员,你的任务是计算每位顾客的应付金额。输入顾客人数,并赋值给total_friends变量。输入总账单数值,并赋值配给 total_bill 变量。在账单费用上加上20%的税,并计算最终账单总额均摊给顾客金额,然后打印。
实现思路#
①输入顾客人数,输入总账单数值 ②计算加上20%税后的总账单 ③计算每位顾客的应付金额 ④最后打印每位顾客的应付金额
实现代码#
# 1.输入顾客人数
total_friends = int(input("请输入顾客人数: "))
# 2.输入总账单数值
total_bill = float(input("请输入总账单数值: "))
# 3.计算加上20%税后的总账单
total_bill_with_tax = total_bill * 1.20
# 4.计算每位顾客的应付金额
amount_per_person = total_bill_with_tax / total_friends
# 5.打印每位顾客的应付金额
print(f"每位顾客的应付金额是: {amount_per_person:.2f}元")
小结#
Q1:Python有几种运算符? 算术运算符 赋值运算符 复合赋值运算符 比较运算符 逻辑运算符
九、【掌握】if选择判断结构#
学习目标#
掌握使用if条件判断语法,完成Python中条件判断相关需求
1 if选择判断结构作用#
在日常开发中,只要有需要进行条件判断的语句基本上都是选择判断结构。 应用场景: 如果年龄大于等于18岁,则可以正常上网。 如果升级考试成绩大于60分,则可以顺利升级就业班。
2 if基础结构#
if基本语法:
if 条件判断:
则执行某段代码...
print()
案例代码:
if True:
print('条件成立执行的代码1')
print('条件成立执行的代码2')
# 下方的代码没有缩进到if语句块,所以和if条件无关
print('我是无论条件是否成立都要执行的代码')
需求:定义一个变量age = 18,判断这个变量是否大于等于18岁,如果满足条件,则可以上网。 案例1:直接定义判断,进行条件判断
age = 18
if age >= 18:
print('满足18岁要求,可以正常上网')
案例2:上网吧案例升级版
age = int(input('请输入您的年龄:'))
if age >= 18:
print('满足18岁要求,可以正常上网')
if选择原理图:学编程除了会写代码还不行,还要回画图(流程图)

3 if...else...结构#
基本语法:
if 条件判断:
当条件判断为True时,则执行这个语句段
else:
当条件判断为False时,则执行这个语句段
案例3:上网吧案例升级升级版,引入else
age = int(input('请输入您的年龄:'))
if age >= 18:
print('满足18岁要求,可以正常上网')
else:
print('不满足18岁要求,回家好好学习,天天向上')
if...else...结构原理图:

4 if...elif...else结构#
如果条件1成立,则执行语句段1 如果条件2成立,则执行语句段2 ... 当所有条件都不成立时,则执行else语句段中的内容
if 条件判断1:
如果此条件为True,则执行这个语句段
elif 条件判断2:
如果此条件为True,则执行这个语句段
elif ...:
...
else:
如果以上所有条件判断都不满足时,则执行这个语句段
if多重条件判断原理图:

案例需求#
编写一个Python程序,根据用户输入的月份(1-12),判断该月份属于哪个季节(春季、夏季、秋季、冬季),并输出结果。如果用户输入的月份不在1-12范围内,程序应提示用户输入无效。
实现思路#
①接受用户通过键盘输入任意一个合法月份 ②使用if...elif 对用户输入月份进行判断 ③匹配输出对应月份季节,如果匹配失败提示,无效月份
代码实现#
# 1.获取用户输入的月份
month = int(input("请输入月份 (1-12): "))
# 2.判断季节
if 3 <= month <= 5:
season = "春季"
elif 6 <= month <= 8:
season = "夏季"
elif 9 <= month <= 11:
season = "秋季"
elif month in [1, 2, 12]:
season = "冬季"
else:
season = "无效的月份"
# 3.输出季节
print(f"该月份属于: {season}")
5 if嵌套结构(难点)#
基本语法:
if 外层条件判断:
# 如果条件为True,则执行以下语句段
if 内层条件判断:
# 如果内层条件为True,则执行以下语句段
else:
# 如果条件为False,则执行以下语句段
嵌套结构看起来异常复杂,但是我们在编写时要遵循一个原则:先编写外层判断,所有语句编写完成后,在编写内层条件判断结构。 案例:法律规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。编写 Python 程序判断是否为酒后驾车。
proof = int(input('请输入驾驶员100ml血液中的酒精含量:'))
# 判断proof酒精含量是否小于20mg
if proof < 20:
print('驾驶员不构成酒驾')
else:
# 已经构成酒驾 => 两种类型(酒驾与醉驾)
if proof >= 80:
print('驾驶员已构成醉驾')
else:
print('驾驶员已构成酒驾')
小结#
Q1:Python有几种if结构
- if..结构
- if…else结构
- if…elif..else结构
十、【实操】综合案例:猜数字游戏#
需求分析#
随机生成1个 1 ~ 100之间的数字, 让用户来猜.判断用户是否猜对了, 并提示. 猜对, 猜大, 猜小.
未知知识点:如何让计算机随机生成数字=> 补充random模块 思考: 如何完成多次猜的机会? 方案1:今天学习的if嵌套 方案2:后续学习的循环
代码实现#
确认:if...elif...else多条件分支结构
import random
# 1. 随机生成1个 1 ~ 100之间的数字, 让用户来猜.
guess_num = random.randint(1, 100) # 包左包右.
print(guess_num)
# 2. 因为只给1次机会, 后续学完循环结构, 再优化.
input_num = int(input('请录入您要猜的整数: '))
# 3. 判断用户是否猜对了, 并提示. 猜对, 猜大, 猜小.
if input_num == guess_num:
print('恭喜您, 猜对了, 请找老师领取奖品, 练习题一套!')
elif input_num > guess_num:
print('哎呀, 您猜大了!')
else:
print('哎呀, 您猜小了!')
