大纲介绍

  • Python环境搭建

  • Python基础语法与变量

  • Python判断结构之if结构

【了解】Python概述与安装

学习目标

了解Python语言特点

掌握Python环境搭建与基础语法

为什么要学习Python

① 技术趋势

Python自带明星属性,热度稳居编程语言界前三

image-20210306090039676

https://www.tiobe.com/tiobe-index/

https://pypl.github.io/PYPL.html

② 简单易学

开发代码少,精确表达需求逻辑;==33个关键字,7种基本数据类型==;语法规则简单,接近自然语言。

image-20210306090337310

③ 应用广泛

Python语言涉及IT行业70%以上的技术领域

image-20210306090727147

Python语言的诞生

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

image-20220223001443177

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版本的选择

Python3.x

​ Python3.6、==Python3.7==、Python3.8、Python3.9…

在生产环境中,我们⼀般不会选择最新版本的Python,因为可能会存在未知Bug,所以⼀般强烈建议大家在选择软件版本时,向前推1 ~ 2个版本。所以咱们课程主要讲解Python3.12版本。

Python解析器的作用

demo.py

1
print('Hello World')

由于Python属于高级语言,其并不能直接在计算机中运行,因为缺少Python语言的运行环境:Python解析器

image-20210306092814499

Python解析器的作用:==就是把Python代码转换为计算机底层可以识别的机器语言==,如0101…

Python解析器的种类

==① CPython,C语言开发的解释器[官方],应⽤广泛的解释器。==

② IPython,基于CPython的一种交互式解释器。

③ 其他解释器

PyPy,基于Python语言开发的解释器。

JPython,运⾏在Java平台的解释器,直接把Python代码编译成Java字节码执⾏。

IronPython,运⾏在微软.Net平台上的Python解释器,可直接把Python代码编译成.Net的字节码。

下载Python解析器

下载地址:https://www.python.org/downloads/release/python-379/

[单击上述链接] – 查找目标文件:Windows x86-64 executable installer – 单击即可下载。

Anaconda安装Python解析器

简介

Anaconda 是一个开源的 Python 和 R 语言发行版,专注于简化数据科学、机器学习和科学计算的开发环境管理,旨在为用户提供一套“开箱即用”的工具和库,帮助快速搭建科学计算所需的开发环境。

1741565552820

安装

1740668600059

1740668629646

1740668667912

1740668753327

1740668982175

1740670257930

1740670281760

1740670324881

测试

  • 打开开始菜单点击Anaconda Powershell Prompt, 分别输入 conda -Vpython -V, 能出现版本号, 即为安装成功.

  • 1740670596381

    1740670645915

小结

Q1:计算机中软件和硬件区别是什么 ?

  • 看得见,摸不着
  • 看得见,摸得着

Q2:Python语言的优点是什么 ?

  • 简单、易学、免费开源、可移植性好、具有丰富的系统库

【实操】Python开发利器之PyCharm

学习目标

完成PyCharm软件安装

实现PyCharm软件与Anaconda整合

为什么要安装PyCharm

工欲善其事必先利其器

在Python的开发领域,其开发工具非常非常多,EditPlus、Notepad++、Sublime Text3、Visual Studio Code、PyCharm(目前功能强大的IDE )

image-20210306102520443

PyCharm的主要作用

PyCharm是⼀种Python IDE (集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的⼯具,内部集成的功能如下:

Project管理

智能提示

语法高亮

代码跳转

调试代码

解释代码(解释器)

框架和库

……

PyCharm的分类

PyCharm一共有两个版本:专业版(收费) 与 社区版(免费、开源)

image-20210306102803654

在基础班,PyCharm社区版足够我们使用,绰绰有余。

下载PyCharm

下载地址:https://www.jetbrains.com/pycharm/download/#section=windows

image-20210306103210207

PyCharm安装

第一步:双击PyCharm软件安装包,进行软件安装

image-20210306104505660

第二步:设置软件的安装路径,理论上没有任何要求,但是建议放在除C盘以外的盘符

image-20210306105046370

第三步:PyCharm基本设置,创建桌面图标与.py文件关联

image-20210306105223088

【!!!!千万别汉化】

PyCharm软件的使用(更改)

☆ 创建Python项目

什么是项目?其实我们在实际开发中,每次参与一个工作的开发都是一个项目的开发过程。所以使用PyCharm的第一件事就是学习Python项目的创建过程。

第一步:创建项目

1740669584662

第二步:设置项目路径,必须放在C盘以外的盘符(非常重要!!!)

1740671399407

配置完成后,单机Create创建Python项目。

☆ 新建文件与代码书写

1740671502874

编写Hello World

1
print('Hello World')

☆ 运行代码

1740671569004

运行结果:

1740671588897

☆ 设置或更换Python解析器

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

1740671620828

☆ PyCharm软件本身设置

① 软件主题(软件未来的样式)

② 编码字体的设置

③ 代码字号的设置(文字大小)

打开File文件 => Settings设置,找到界面设置:

image-20210306115108007

主题设置:

image-20210306115322452

字体与字号设置:

image-20210306115516870

字体设置:

image-20210306115611339

字号设置:

image-20210306115735435

☆ 打开项目与关闭项目

打开项目:本身项目已经存在了,我们直接打开。

image-20210306120615122

选择项目目录(文件夹)即可,如下图所示:

image-20210306120712306

① This Window => 覆盖当前项⽬,从⽽打开目标项目

② New Window => 在新窗⼝打开,则打开两次PyCharm,每个PyCharm负责一个项⽬

③ Attach => 把两个项目合并在一起,放在同一个窗口中

关闭项目:对已经运行项目进行关闭操作。

image-20210306120425927

【熟悉】Python注释与快捷键

学习目标

了解Python注释作用

掌握常见的注释格式

熟练使用常见的快捷键

注释的作用

首先强调一件事:Python代码 => Python解析器 => 机器语言,但是注释经过了Python的解释器并不会解析与执行。因为其主要就是进行代码的注释。

注释作用:==提高代码的阅读性==

image-20210306143714495

在我们编写Python程序时,为了了提高程序的可读性,强烈建议大家为核心代码添加注释信息。

Python注释的基本语法

☆ 单行注释

单行注释,以”#”(Shift + 3)号开头,只能注释一行内容

1
# 注释内容

示例代码:

第一种:代码行的上面

1
2
# 输出Hello World字符串
print('Hello World')

第二种:放在代码的后面(代码后面保留2个空格)

1
print('Hello World')  # 输出Hello World字符串

☆ 多行注释

多行注释:可以同时注释多行代码或程序,常用于代码块的注释

基本语法:

1
2
3
4
5
6
"""
注释内容
第一行
第二行
第三行
"""

1
2
3
4
5
6
'''
注释内容
第一行
第二行
第三行
'''

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
"""
Hi, 大家好
我是黑马程序员的小伙伴
从今天开始,我们将一起学习Python这门语言
"""

'''
Hi, 大家好
我是黑马程序员的小伙伴
从今天开始,我们将一起学习Python这门语言
'''
print('Hi, 大家好')
print('我是黑马程序员的小伙伴')
print('从今天开始,我们将一起学习Python这门语言')

☆ PyCharm注释小技巧(快捷键)

在PyCharm中,我们可以使用Ctrl + /斜杠来对代码或程序进行快速注释。

代码提示

在PyCharm中,当我们输入Python关键字中的前2~3个字符,其会自动进行代码提示。这个时候,我们只需要按回车即可以快速的输入某个内容。

image-20210306150352389

代码保存

编写代码时,一定要养成一个好的习惯,使用Ctrl + S快速对代码进行保存操作。

个人建议,当写完一行代码时,就按一次。

撤销与恢复

如果不小心删除了某行代码,这个时候我们可以快速按Ctrl + Z就可以快速进行恢复。每按一次就撤销一次,如果撤销多了,怎么办?

答:还可以通过Ctrl + Y进行恢复操作

学习目标

Q1:为什么要给程序写注释?

  • 提高代码的阅读性

Q2:Python中注释有几种常见格式,特点是什么

  • 单行注释,以”#”号开头,只能注释一行内容
  • 多行注释:可以同时注释多行代码或程序,常用于代码块的注释

【掌握】Python中的变量

学习目标

理解变量的定义与使用

熟悉变量的命名规则和数据类型

引入变量的概念

那什么是变量呢?

==① 变量是存储数据的容器==

==② 变量在程序运行过程中是可以发生改变的量==

==③ 变量存储的数据是临时的==

变量的定义

基本语法:

1
2
变量名称 = 变量的值
注:等号的两边都要保留一个空格,其实Python中建议符号的两边尽量都要保留一个空格

说明:在Python程序中,这个等号和日常生活中的等号不太一样,其有一个专业名词:赋值运算符,其读法:要从右向左读,把变量的值通过 = 赋值给左边的变量。

变量的命名规则

标识符命名规则是Python中定义变量名称时一种命名规范,具体如下:

==① 由数字、字母、下划线(_)组成==

==② 不能数字开头==

==③ 严格区分⼤小写==

==④ 不能使⽤内置关键字作为变量名称==

image-20210306155908564

举个栗子:

① abc、abc123、_abc、hello(合理)

② 123abc、@abc、abc-123(不合理)

③ _(下划线) => 请问这可以是一个变量名称么?答:可以

1
2
for _ in range(10):
...

注意:在Python变量命名时,不建议使用_开头,因为其与后面要学习的私有属性想冲突

④ 变量abc和变量ABC是同一个变量么?答:不一样,这是两个完全不同的变量

⑤ 记不住Python关键字怎么办?答:借助于help()方法

1
>>> help('keywords')

推荐变量的命名规则

① 变量命名一定要做到见名知义。

② 大驼峰:即每个单词首字母都大写,例如: MyName 。

③ 小驼峰:第二个(含)以后的单词首字母大写,例如: myName 。

④ 下划线:例如: my_name 。

变量的定义与调用

在Python中,记住:变量一定要先定义,后使用,否则会报错。

定义:

1
2
name = 'itheima'
address = '北京市顺义区京顺路99号'

调用:

1
2
3
4
print(name)
print(address)

print(name, address)

变量的定义与使用常见问题

① 变量与字符串如何区别:

==在Python中,如果要赋值的内容添加了单引号或者双引号,其就是Python中的一种数据类型:叫做字符串(日常生活中的文本信息)==

② print打印变量时,喜欢为其添加引号

1
2
3
print(name)  # 输出变量name对应的值

print('name') # 输出'name'这个字符串

③ PyCharm快捷键 => Ctrl + Alt + L => 代码格式化

变量的数据类型

变量的定义非常的简单,但是很多小伙伴可能会想:变量除了存储这种字符类型的数据以外,还能存储其他类型的数据么?其实,在 Python中,我们为了应对不同的业务需求,也会把数据分为不同的类型,如下图所示:

image-20210306162601034

面试题:请手写出Python中的7种数据类型?

答:数值类型、布尔类型、字符串类型、列表类型、元组类型、集合类型、字典类型

今天我们只需要了解前3种即可。

问题:如何判断一个变量到底是什么类型?

答:① 使用type(变量名称)方法,返回变量的数据类型 ② isinstance(变量名称,数据类型),只能返回True或False(真的还是假的)

数值类型

数值类型就是我们日常生活中的数字,数字又分为两种形式:整数 与 小数(带小数点)

整数类型:int类型

小数类型:float类型

案例1:定义一个人的信息,姓名:Tom、年龄18岁

1
2
3
name = 'Tom'
age = 18
print(type(age))

案例2:定义一个超市收银系统,写入一个名称:大白菜,价格:3.5

1
2
3
name = '大白菜'
price = 3.5
print(type(price))

布尔类型

布尔类型是与逻辑相关一种数据类型,只有两个值:True(真)与False(假)

案例1:手工定义一个flag变量,其值为True

1
2
3
flag = True
print(flag)
print(type(flag))

字符串类型

在Python变量定义中,如果其赋值的内容是通过单引号或双引号引起来的内容就是字符串str类型。

1
2
msg = '这家伙很懒,什么都没有留下...'
print(type(msg))

其他类型(了解)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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()函数的使用及其返回值的类型

格式化输出

目前为止,我们所有的输出都是直接通过print(变量名称)形式直接打印的。但是实际工作中,我们可能需要对变量的输出进行格式化操作(==按照一定格式进行输出==)。

(张三,20,北京昌平

变量的格式化

百分号格式化输出

基本语法:

1
2
3
4
...
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岁了。

image-20210306175326815

案例:定义两个变量title=’大白菜’,price=3.5,按照如下格式进行输出:今天蔬菜特价了,大白菜只要3.5元/斤。

1
2
3
4
title = '大白菜'
price = 3.5
# 格式化输出“今天蔬菜特价了,大白菜只要3.5元/斤。"
print("今天蔬菜特价了,%s只要%.2f元/斤。" % (title, price))

其实除了%f可以设置小数点位数以外,%d也可以填充序号。

案例:定义两个变量id=1,name=’itheima’,按照如下格式进行输出:姓名itheima,学号000001

1
2
3
id = 1
name = 'itheima'
print("姓名%s,学号%06d" % (name, id))

format方法格式化输出

基本语法:

1
2
3
...
print('字符串{}'.format(变量名称1))
print('{}字符串{}'.format(变量名称1, 变量名称2))

案例:定义两个变量,name=’孙悟空’,mobile=’18878569090’,按照以下格式进行输出”姓名:孙悟空,联系方式:18878569090”

1
2
3
name = '孙悟空'
mobile = '18878569090'
print("姓名:{},联系方式:{}".format(name, mobile))

format方法简写形式格式化输出(推荐)

在Python3.6以后版本,为了简化format输出操作,引入了一个简写形式:

1
2
3
name = '孙悟空'
mobile = '18878569090'
print(f'姓名:{name},联系方式:{mobile}')

格式化输出中的转义符号

在字符串中,如果出现了\t和\n,其代表的含义就是两个转义字符

1
2
\t :制表符,一个tab键(4个空格)的距离
\n :换行符

案例:

1
2
print('*\t*\t*')
print('hello\nworld')

特别说明:==默认情况下,每个print()方法执行完毕后,都会输出一个\n换行符。如果不想让print()方法换行,可以添加一个end参数==

1
print('*', end='')

为什么需要输入

到目前为止,我们所有的程序都只能把数据输出给用户。但是实际工作中,我们经常输入获取用户的输入信息,如银行系统中的密码输入、淘宝中的用户登录验证。

image-20210306182224429

input()输入方法

在Python中,如果想让Python程序接受用户的输入信息,可以使用input()方法

基本语法:

1
input()

但是往往只有input()方法,其意义不大,我们还应该使用一个变量来临时接受用户的输入,已方便后期的操作。

1
变量名称 = input('提示信息:')

案例:银行系统中的,输入密码的过程

1
2
password = input('请输入您的银行卡密码:')
print(f'您输入的银行卡密码为:{password}')

input()方法重要事项

记住:所有由input()方法获取的数据都是==“字符串”==类型

1
2
3
4
5
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数据类型转换

使用Python实现超市的收银系统

image-20210307095839494

Python:

1
2
3
4
5
name = input('请输入您要购买商品名称:')
id = input('请输入您要购买商品编号:')
price = input('请输入您要购买的商品价格:')

print(f'您购买了{name},商品编号为{id},商品价格为{price},欢迎下次光临!')

以上程序虽然可以按照上图完成程序的正常输出,但是遗留了一个非常严重的问题:这个价格price变量无法参与数学运算(如买了两个奥利奥,应该是18.5 * 2),原因在于input()方法返回的所有的结果都是str字符串类型。

怎么解决以上问题呢? 答:使用==数据类型转换==

了解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:把用户输入的幸运数字,转换为整型

1
2
3
4
5
6
7
8
num = input('请输入您的幸运数字:')
print(type(num))

# 数据类型转换,把str字符串类型转换为int类型
print('-' * 20)

num = int(num)
print(type(num))

以上代码还可以简写为:

1
2
num = int(input('请输入您的幸运数字:'))
print(type(num))

案例2:多种数据类型转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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()方法的使用,把字符串中的数字转换为原数据类型

1
2
3
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() :把字符串转换为原数据类型

    记住:① 如果一个字符串 * 数字,代表对这个字符串进行复制操作

    1
    2
    ② 当float浮点类型转换为int整型时,其小数点后面的数据会丢失,一定要记住这个特性。
    ③ 字符串转数值类型,字符串中的数据必须是有意义的数值

【掌握】Python运算符

学习目标

掌握Python算术运算符

熟练使用逻辑运算符与赋值运算符

了解短路运算符

运算入门案例

image-20210307110021473

需求:用户手工输入梯形的上底、下底以及高,能直接通过Python打印出梯形的面积为多少。

算术运算符

所谓的算数运算符就是我们日常生活中的加减乘除等待。

运算符 描述 实例
+ 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:了解一下算术运算符

1
2
3
4
5
6
7
8
num1 = 10
num2 = 2

# 四则运算 + - * /
print(f'加:{num1 + num2}')
print(f'减:{num1 - num2}')
print(f'乘:{num1 * num2}')
print(f'除:{num1 / num2}')

案例2:和其他编程语言不太相同的几个算术运算符

1
2
3
4
5
6
7
8
9
10
11
12
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}')

算术运算符案例:求梯形的面积

知识点:用户输入、数据类型转换以及算术运算符

1
2
3
4
5
6
7
a = float(input('请输入上底:'))
b = float(input('请输入下底:'))
h = float(input('请输入高:'))

s = (a + b) * h / 2

print(f'梯形的面积:{s}')

赋值运算符

运算符 描述 实例
= 赋值 将=右侧的结果赋值给等号左侧的变量

变量名 = 变量值

== 等于号

案例1:把某个值赋值给某个变量

1
num = 10

案例2:多个变量同时进行赋值操作

1
2
3
n = 5
f = 10.88
s = 'hello world'

简写为:

1
2
3
4
n, f, s = 5, 10.88, 'hello world'
print(n)
print(f)
print(s)

案例3:多个变量赋予相同的值

1
2
a = 10
b = 10

简写为:

1
a = b = 10

复合赋值运算符

复合赋值运算符 = 算术运算符 结合 赋值运算符

image-20210307115314520

复合赋值运算符的计算顺序 = 先执行算术运算符,执行完毕后,把结果在赋值给左边的变量。

案例:AA制餐厅

需求: 假设你是一位很棒的AA制餐厅的服务员,你的任务是计算每位顾客的应付金额。
输入顾客人数,并赋值给total_friends变量。
输入总账单数值,并赋值配给 total_bill 变量。
在账单费用上加上20%的税,并计算最终账单总额均摊给顾客金额,然后打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
需求分析:
#第一步:获取用户输入顾客人数
#第二步:输入总账单数值
#第三步:计算加上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}元")

练习:均分巧克力

需求: 编写一个程序:将N个巧克力均分给M个儿童。
​ 从输入获取一个整数:巧克力数量,并将其分配给 chocolates 变量。
​ 从输入获取一个整数:孩子数量,并将其分配给 children 变量。
​ 计算每个孩子在除法后得到的巧克力数量并打印出来。
​ 计算剩余巧克力的数量并打印出来。
​ 假设:巧克力的数量总是大于孩子的数量。

1
2
3
4
5
6
7
需求分析:
# 1. 从输入获取一个整数:巧克力数量,并将其分配给
# 2. 从输入获取一个整数:孩子数量,并将其分配给 children 变量
# 3. 计算每个孩子在除法后得到的巧克力数量
# 4. 计算剩余巧克力的数量
# 5. 打印每个孩子得到的巧克力数量
# 6. 打印剩余巧克力的数量

比较运算符

image-20210307120855222

特别注意:当我们使用比较运算符对两个变量进行比较时,其返回一个布尔类型的值。

案例:两个数大小的比较

1
2
3
4
5
6
7
8
9
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

练习题

1
2
3
4
r = float(input('请输入要计算圆的半径:'))
PI = 3.14
s = PI * r ** 2
print(f'圆的面积为:{s}')

练习题2:赋值运算 => 输入身高,体重,求BMI = 体重(kg)/身高(m)的平方。

逻辑运算符

image-20210307144233542

not就是取反,只有一个表达式not 表达式,如果表达式为True,则not以后就返回False。反之,则返回True。

and :逻辑与,只有当两边的表达式全部为真,则最终结果返回为真,否则返回为假。

x :False

y :False

result = x and y

or :逻辑或,只要有一方为真,则整个表达式的返回结果就为真。除非两边的表达式都为假,则整个结果返回为假。

result = x or y

讲个非诚勿扰的小故事:

① 女孩子要求比较高,要求男孩子必须要有房且有车

1
2
3
4
5
6
7
8
表达式1 and 表达式2
当表达式1True且表达式2True时,则整个表达式返回结果为True
当表达式1或表达式2中有一个表达式为假,则整个表达式返回结果为False


有房 and 有车 则 牵手成功
有房 and 没车 则 牵手失败
没房 and 有车 则 牵手失败

② 女孩子要求一般,要求男孩子有房或者有车即可

1
2
3
4
5
6
7
8
9
表达式1 or 表达式2
当表达式1True或表达式2True时,则整个表达式返回结果为True
当表达式1与表达式2都为False时,则整个表达式才会返回False


有房 or 有车 则 牵手成功
有房 or 没车 则 牵手成功
没房 or 有车 则 牵手成功
没房 or 没车 则 牵手失败

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

案例:

1
2
3
4
5
6
7
8
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

运算符_案例

案例需求

假设你是一位很棒的AA制餐厅的服务员,你的任务是计算每位顾客的应付金额。输入顾客人数,并赋值给total_friends变量。输入总账单数值,并赋值配给 total_bill 变量。在账单费用上加上20%的税,并计算最终账单总额均摊给顾客金额,然后打印。

实现思路

①输入顾客人数,输入总账单数值

②计算加上20%税后的总账单

③计算每位顾客的应付金额

④最后打印每位顾客的应付金额

实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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}元")

巩固练习

需求: 编写一个程序:将N个巧克力均分给M个儿童。从输入获取一个整数:巧克力数量,并将其分配给 chocolates 变量。从输入获取一个整数:孩子数量,并将其分配给 children 变量。计算每个孩子在除法后得到的巧克力数量并打印出来。计算剩余巧克力的数量并打印出来。假设:巧克力的数量总是大于孩子的数量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 从输入获取一个整数:巧克力数量,并将其分配给 chocolates 变量
chocolates = int(input("请输入巧克力数量: "))

# 2. 从输入获取一个整数:孩子数量,并将其分配给 children 变量
children = int(input("请输入孩子数量: "))

# 3. 计算每个孩子在除法后得到的巧克力数量
chocolates_per_child = chocolates // children

# 4. 计算剩余巧克力的数量
remaining_chocolates = chocolates % children

# 5. 打印每个孩子得到的巧克力数量
print(f"每个孩子得到的巧克力数量是: {chocolates_per_child}")

# 6. 打印剩余巧克力的数量
print(f"剩余的巧克力数量是: {remaining_chocolates}")

总结

Q1:Python有几种逻辑运算符?特点是什么?

  • and 逻辑与,只有当两边的表达式全部为真,则最终结果返回为真,否则返回为假
  • or 逻辑或,只要有一方为真,则整个表达式的返回结果就为真。除非两边的表达式都为假,则整个结果返回为假。
  • not 就是取反,只有一个表达式not 表达式,如果表达式为True,则not以后就返回False。反之,则返回True。

【掌握】if选择判断结构

学习目标

掌握使用if条件判断语法,完成Python中条件判断相关需求

if选择判断结构作用

在日常开发中,只要有需要进行条件判断的语句基本上都是选择判断结构。

应用场景:

如果年龄大于等于18岁,则可以正常上网。

如果升级考试成绩大于60分,则可以顺利升级就业班。

if选择判断结构的基本语法

if基本语法:

1
2
3
4
if 条件判断:
则执行某段代码...

print()

案例代码:

1
2
3
4
5
6
if True:
print('条件成立执行的代码1')
print('条件成立执行的代码2')

# 下方的代码没有缩进到if语句块,所以和if条件无关
print('我是无论条件是否成立都要执行的代码')

if选择结构案例

需求:定义一个变量age = 18,判断这个变量是否大于等于18岁,如果满足条件,则可以上网。

案例1:直接定义判断,进行条件判断

1
2
3
age = 18
if age >= 18:
print('满足18岁要求,可以正常上网')

案例2:上网吧案例升级版

1
2
3
age = int(input('请输入您的年龄:'))
if age >= 18:
print('满足18岁要求,可以正常上网')

if选择原理图:学编程除了会写代码还不行,还要回画图(流程图)

image-20210307161204181

if…else…结构

基本语法:

1
2
3
4
if 条件判断:
当条件判断为True时,则执行这个语句段
else:
当条件判断为False时,则执行这个语句段

案例3:上网吧案例升级升级版,引入else

1
2
3
4
5
age = int(input('请输入您的年龄:'))
if age >= 18:
print('满足18岁要求,可以正常上网')
else:
print('不满足18岁要求,回家好好学习,天天向上')

if…else…结构原理图:

image-20210307162555060

if…elif…else多条件判断结构

如果条件1成立,则执行语句段1

如果条件2成立,则执行语句段2

当所有条件都不成立时,则执行else语句段中的内容

1
2
3
4
5
6
7
8
if 条件判断1:
如果此条件为True,则执行这个语句段
elif 条件判断2:
如果此条件为True,则执行这个语句段
elif ...:
...
else:
如果以上所有条件判断都不满足时,则执行这个语句段

if多重条件判断原理图:

image-20210307165907589

if_elif_else案例

案例需求

编写一个Python程序,根据用户输入的月份(1-12),判断该月份属于哪个季节(春季、夏季、秋季、冬季),并输出结果。如果用户输入的月份不在1-12范围内,程序应提示用户输入无效。

实现思路

①接受用户通过键盘输入任意一个合法月份

②使用if…elif 对用户输入月份进行判断

③匹配输出对应月份季节,如果匹配失败提示,无效月份

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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}")

巩固练习

需求: 编写一个程序,找出三个数字中最小的一个。取三个整数输入,并将它们存储在number1, number2, 和number2中。使用 “if…elif…else “语句打印它们之间最小的数字。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"""
需求: 编写一个程序:找出三个数字中最小的一个。
取三个整数输入,并将它们存储在number1, number2, 和number2中。
使用 "if...elif...else "语句打印它们之间最小的数字。
"""

# 1. 取三个整数输入,并将它们存储在number1, number2, 和number3中
number1 = int(input("请输入第一个数字: "))
number2 = int(input("请输入第二个数字: "))
number3 = int(input("请输入第三个数字: "))

# 2. 使用 "if...elif...else" 语句找出最小的数字
if number1 <= number2 and number1 <= number3:
# 3. 如果number1是最小的,打印number1
print(f"最小的数字是: {number1}")
elif number2 <= number1 and number2 <= number3:
# 4. 如果number2是最小的,打印number2
print(f"最小的数字是: {number2}")
else:
# 5. 如果number3是最小的,打印number3
print(f"最小的数字是: {number3}")

if嵌套结构(难点)

基本语法:

1
2
3
4
5
6
if 外层条件判断:
# 如果条件为True,则执行以下语句段
if 内层条件判断:
# 如果内层条件为True,则执行以下语句段
else:
# 如果条件为False,则执行以下语句段

嵌套结构看起来异常复杂,但是我们在编写时要遵循一个原则:==先编写外层判断,所有语句编写完成后,在编写内层条件判断结构。==

案例:法律规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。编写 Python 程序判断是否为酒后驾车。

1
2
3
4
5
6
7
8
9
10
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结构

【实操】综合案例:石头剪刀布

需求分析

参与游戏的角色有两个(玩家 与 电脑),玩家手工出拳,电脑随机出拳,根据石头剪刀布判断输赢。

玩家:player(玩家手工输入石头0、剪刀1、布2)

电脑:computer(随机出拳)

输赢结果很重要,有三种情况:

① 玩家赢

☆ player:石头 赢 computer:剪刀

☆ player:剪刀 赢 computer:布

☆ player:布 赢 computer:石头

② 平局

只要player 与 computer出拳相等,就代表平局

③ 电脑赢

如果不满足以上两个条件,则电脑获胜!

未知知识点:如何让计算机随机出拳 => 随机

代码实现

确认:if…elif…else多条件分支结构

1
2
3
4
5
6
7
8
9
10
11
12
13
# 第一步:提示输入输入石头剪刀布,0-代表石头,1代表剪刀,2代表布
player = int(input('请输入您的出拳0-代表石头,1代表剪刀,2代表布:'))
# 第二步:电脑随机出拳(后续解决)
computer = 1
# 第三步:根据用户以及计算机的出拳判断输赢
# 什么情况,玩家会赢
# player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0):
print('玩家获胜')
elif player == computer:
print('平局')
else:
print('电脑获胜')

遗留问题:计算机没办法随机出拳

作业

作业一:根据考试成绩, 发放奖励

需求:根据考试成绩发放奖励,键盘录入小明的考试成绩并接收, 根据考试成绩发放奖励.

作业二:进阶版: 猜拳游戏

需求:上述猜拳案例无法实现计算机自动随机出拳。在原有的功能基础上,实现计算机随机出拳。增加游戏趣味性