黑马程序员python(二)——python初识 - 输出&输入 - 转换数据类型 - 运算符 - 程序流程结构

视频见:https://www.bilibili.com/video/av54728208
python书写格式官方参考:https://www.python.org/dev/peps/pep-0008/

1 python初识

1.1 注释

作用: 通过自己熟悉的语言,在程序中对某些代码进行标注说明,能够大大增强程序的可读性。

两种格式

  1. 单行注释# 注释内容
# 简单的说明可以放到一行代码的后面,一般习惯代码后面添加两个空格再书写注释文字
  • 快捷键ctrl+?
  • 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明
  1. 多行注释""" 注释内容 """''' 注释内容 '''
"""
    下面三行都是输出的作用,输出内容分别是:
    hello Python
    hello itcast
"""
  • 通常放在一段代码的上方,对该段代码做整体说明

注释的作用:用人类熟悉的语言对代码进行解释说明,方便后期维护。
注意:解释器不执行注释内容

1.2 变量

1.2.1 变量作用

程序中,数据都是临时存储在内存中,为了更快速的查找或使用这个数据,通常把这个数据在内存中存储之后定义一个名称,这个名称就是变量。
在这里插入图片描述

变量就是一个存储数据的时候当前数据所在的内存地址的名字而已。

1.2.2 定义变量

语法: 变量名 = 值

变量名自定义,要满足标识符命名规则。

标识符命名规则是Python中定义各种名字的时候的统一规范,具体如下:

  • 由数字、字母、下划线组成
  • 不能数字开头
  • 不能使用内置关键字
  • 严格区分大小写
False None True and as assert break class
continue def del elif else except finally for
from global if import in is lambda nonlocal
not or pass raise return try while with
yield

命名习惯

  • 见名知义。
  • 大驼峰:即每个单词首字母都大写,例如: MyName。
  • 小驼峰:第二个(含)以后的单词首字母大写,例如: myName。
  • 下划线:例如: my_name。

1.2.3 使用变量

my_name = 'TOM'
print(my_name)

schoolName = '黑马程序员 '
print(schoolName)

总结: 变量名要先定义再使用

扫描二维码关注公众号,回复: 11115205 查看本文章

1.3 认识数据类型

在 Python 里为了应对不同的业务需求,也把数据分为不同的类型。
在这里插入图片描述
检测数据类型的方法: type()

a = 1
print(type(a))  # <class 'int'> -- 整型

b = 1.1
print(type(b))  # <class 'float'> -- 浮点型

c = True
print(type(c))  # <class 'bool'> -- 布尔型

d = '12345'
print(type(d))  # <class 'str'> -- 字符串

e = [10, 20, 30]
print(type(e))  # <class 'list'> -- 列表

f = (10, 20, 30)
print(type(f))  # <class 'tuple'> -- 元组

h = {10, 20, 30}
print(type(h))  # <class 'set'> -- 集合

g = {'name': 'TOM', 'age': 20}
print(type(g))  # <class 'dict'> -- 字典

2 输出&输入

2.1 输出

作用: 程序输出内容给用户

print('hello Python')   # hello world

age = 18
print(age)		# 18

2.1 格式化输出

所谓的格式化输出即按照一定的格式输出内容。

格式化符号

格式符号 转换
%s 字符串
%d 有符号的十进制整数
%f 浮点数
%c 字符
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写ox)
%X 十六进制整数(小写OX)
%e 科学计数法(小写‘e’)
%E 科学计数法(大写‘E’)
%g %f和%e的简写
%G %f和%E的简写

技巧

  • 有符号的整数可以在数字前加±,即包括正整数、负整数和0;无符号整数仅包括正整数
  • %06d,表示输出的整数显示位数,不足以0补全,超出当前位数则原样输出
  • %.2f,表示小数点后显示的小数位数。
  • 多个变量用% (变量1,变量2,……)
  • 所有输出变量都可以用%s符号
  • 格式化字符串除了 %s,还可以写为f'{表达式}'

示例:

age = 18 
name = 'TOM'
weight = 75.5
student_id = 1

# 我的名字是TOM
print('我的名字是%s' % name)

# 我的学号是0001
print('我的学号是%4d' % student_id)

# 我的体重是75.50公斤
print('我的体重是%.2f公斤 ' % weight)       # 默认保留6位小数

# 我的名字是TOM,今年 18岁了
print('我的名字是%s,今年 %d岁了 ' % (name, age))

# 我的名字是TOM,明年 19岁了
print('我的名字是%s,明年 %d岁了 ' % (name, age + 1))

# 我的名字是TOM,明年 19岁了了
print(f'我的名字是{name}, 明年 {age + 1}岁了 ')

f-格式化字符串是 Python 3.6中新增的格式化方法,该方法更简单易读。

2.2 转义字符

  • \n:换行。
  • \t:制表符,一个 tab键(4个空格)的距离。
print("hello\nworld")

2.3 结束符

想一想,为什么两个 print会换行输出?

print("hello", end = "\t")
print("hello", end = "……")

在这里插入图片描述

在Python中,print(), 默认自带 end="\n"这个换行结束符,所以导致每两个print直接会换行展示,用户可以按需求更改结束符。

2.2 输入

在Python中,程序接收用户输入的数据的功能即是输入。

输入的语法: input("提示信息")

输入的特点

  • 当程序执行到 input,等待用户输入,输入完成之后才继续向下执行。
  • 在Python中, input接收用户输入后,一般存储到变量,方便使用。
  • 在Python中, input会把接收到的任意用户输入的数据都当做字符串处理。
password = input('请输入您的密码: ')

print(f'您输入的密码是 {password}')
# <class 'str'>
print(type(password))

控制台输出结果如下:
在这里插入图片描述

3 转换数据类型

3.1 转换数据类型的作用

问: input()接收用户输入的数据都是字符串类型,如果用户输入 1,想得到整型该如何操作?
答: 转换数据类型即可,即将字符串类型转换成整型。

3.2 转换数据类型的函数

函数 说明
int(x[,base]) 将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) 将一个字符转换为它的ASCll整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串
bin(x) 将一个整数转换为一个二进制字符串

示例1:
需求:input接收用户输入,用户输入 “1”,将这个数据1转换成整型。

# 1. 接收用户输入
num = input('请输入您的幸运数字: ')

# 2. 打印结果
print(f"您的幸运数字是{num}")

# 3. 检测接收到的用户输入的数据类型 -- str类型
print(type(num))

# 4. 转换数据类型为整型 -- int类型
print(type(int(num)))

示例2:

# 1. float() -- 转换成浮点型
num1 = 1
print(float(num1))            # 1.0
print(type(float(num1)))      # <class 'float'>

# 2. str() -- 转换成字符串类型
num2 = 10
print(type(str(num2)))

# 3. tuple() -- 将一个序列转换成元组
list1 = [10, 20, 30]
print(tuple(list1))
print(type(tuple(list1)))       # (10, 20, 30)


# 4. list() -- 将一个序列转换成列表
t1 = (100, 200, 300)
print(list(t1))			# [100, 200, 300]
print(type(list(t1)))

# 5. eval() -- 将字符串中的数据转换成 Python表达式原本类型
str1 = '10'
str2 = '[1, 2, 3]'
str3 = '(1000, 2000, 3000)'
print(type(eval(str1)))		# <class 'int'>
print(type(eval(str2)))		# <class 'list'>
print(type(eval(str3)))		# <class 'tuple'>

4 运算符

运算符分类

算数运算符 赋值运算符 复合赋值运算符 比较运算符 逻辑运算符

4.1 算数运算符

运算符 描述 实例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
// 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4
% 取余数 返回除法的余数 9 % 2 = 1
** 又称次方、乘方,2 ** 3 = 8
( ) 小括号 小括号用来提高运算优先级,即(1+2)*3输出结果为9

注意:

  • 混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -
  • + - *只要参与运算的有浮点数,结果就是浮点数;/结果都是浮点数

4.2 赋值运算符

运算符 描述 实例
= 赋值 将 = 右侧的结果赋值给等号的左侧的变量
  1. 单个变量赋值
num = 1
print(num)
  1. 多个变量赋值
num1, float1, str1 = 10, 0.5, 'hello world'
print(num1)
print(float1)
print(str1)

结果如下:
在这里插入图片描述
3. 多变量赋相同值

a = b = 10
print(a)
print(b)

结果如下:
在这里插入图片描述

4.3 复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 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
a = 100
a += 1
# 输出101  a = a + 1,最终a = 100 + 1
print(a)

b = 2
b *= 3
# 输出6  b = b * 3,最终b = 2 * 3
print(b)

c = 10
c += 1 + 2
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
print(c)

d = 10
d *= 1 + 3
print(d)   # 40,1 + 3 = 4,d *= 4,推导出d = 10 * 4

优先级:

  1. 先算复合赋值运算符右侧的表达式
  2. 再算复合赋值运算的算数运算
  3. 最后算赋值运算

4.4 比较运算符

比较运算符也叫关系运算符, 通常用来判断。

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

4.5 逻辑运算符

运算符 逻辑表达式 描述 实例
and x and y 布尔“与”:如果x为False,x and y 返回False,否则它返回y的值。 True and False,返回False。
or x or y 布尔“或”:如果x是True,它返回True,否则它返回y的值。 False or True,返回True。
not not x 布尔“非”:如果x为True,返回False。如果x为False,它返回True。 not True 返回 False,not False 返回True
a = 1
b = 2
c = 3
print((a < b) and (b < c))  # True
print((a > b) and (b < c))  # False
print((a > b) or (b < c))   # True
print(not (a > b))          # True

注意: 表达式加()可以提高代码易读性

数字之间的逻辑运算

a = 0
b = 1
c = 2

# and运算符,只要有一个值为 0,则结果为0,否则结果为最后一个非 0 数字
print(a and b)  # 0
print(b and a)  # 0
print(a and c)  # 0
print(c and a)  # 0
print(b and c)  # 2
print(c and b)  # 1

# or运算符,只有所有值为0结果才为0,否则结果为第⼀一个⾮非 0数字
print(a or b)  # 1
print(a or c)  # 2
print(b or c)  # 1

4.6 运算符的优先级

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

运算符 描述
() 小括号(最高优先级),不属于运算符
**
* ,/ ,%, // 乘、除、取余数、取整除
+, - 加法、减法
<=, <, > ,>= 比较运算符
==, != 等于运算符
=, %=, /=, //= ,-=, += ,*= ,**= 赋值运算符
not ,or, and 逻辑运算符

5 程序流程结构

5.1 条件语句

假设一个场景:

  • 同学们这个年龄去过网吧吗?
  • 去网吧进门想要上网必须做的一件事是做什么?(考虑重点)
  • 为什么要把身份证给工作人员?
  • 是不是就是为了判断是否成年?
  • 是不是如果成年可以上网?如果不成年则不允许上网?

其实这里所谓的判断就是条件语句,即条件成立执行某些代码,条件不成立则不执行这些代码

if 语句的三种形式

  • 单行格式 if 语句
  • 多行格式 if 语句
  • 多条件的 if 语句

5.1.1 if 语句

  1. 单行格式 if 语句:if

语法:

if 条件:
   条件成立执行的代码 1
   条件成立执行的代码 2
   ......

示例1:

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

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

示例2:
需求分析:用户可以输出自己的年龄,然后系统进行判断是否成年,成年则输出 "您的年龄是 '用户输入的年龄 ',已经成年,可以上网 "。

# input接受用户输入的数据是字符串类型,条件是age和整型18做判断,所以这里要int转换数据类型
age = int(input('请输入您的年龄: '))

if age >= 18:
   print(f'您的年龄是 {age},已经成年,可以上网 ')

print('系统关闭')
  1. 多行格式if语句:if...else...

作用: 条件成立执行 if 下方的代码 ; 条件不成立执行 else下方的代码。

思考:网吧上网的实例,如果成年,允许上网,如果不成年,用户不能上网

语法:

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

示例:

age = int(input('请输入您的年龄: '))

if age >= 18:
   print(f'您的年龄是 {age},已经成年,可以上网 ')
else:
   print(f'您的年龄是 {age},未成年,请自行回家写作业 ')
print('系统关闭')

注意: 如果某些条件成立执行了相关的代码,那么其他的情况的代码解释器根本不会执行。

  1. 多重判断 if...elif...else...

思考:中国合法工作年龄为 18-60岁,即如果年龄小于18的情况为童工,不合法;如果年龄在18-60岁之间为合法工龄;大于60岁为法定退休年龄。

语法:

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

多重判断也可以和else配合使用。一般 else放到整个if语句的最后,表示以上条件都不成立的时候执行的代码。

示例:

age = int(input('请输入您的年龄: '))
if age < 18:
   print(f'您的年龄是 {age},童工一枚 ')
elif age >= 18 and age <= 60:
   print(f'您的年龄是 {age},合法工龄 ')
elif age > 60:
   print(f'您的年龄是 {age},可以退休')

拓展:age >= 18 and age <= 60可以化简为18 <= age <= 60

  1. if嵌套

思考:坐公交:如果有钱可以上车,没钱不能上车;上车后如果有空座,则可以坐下;如果没空座,就要站着。怎么书写程序?

语法:

if 条件1:
   条件1成立执行的代码
   条件1成立执行的代码
   
   if 条件2:
       条件2成立执行的代码
       条件2成立执行的代码

注意:条件2的 if 也是出于条件1的缩进关系内部。

示例:

"""
1. 如果有钱,则可以上⻋车
   上车后,如果有空座,可以坐下
   上车后,如果没有空座,则站着等空座位
2. 如果没钱,不能上车
"""
# 假设用 money = 1 表示有钱, money = 0表示没有钱; seat = 1 表示有空座,seat = 0 表示没有空座
money = 1
seat = 0
if money == 1:
   print('土豪,不钱,顺利⻋车 ')
   if seat == 1:
       print('有空座,可以坐下')
   else:
       print('没有空座,站等')
else:
   print('没钱,不能上车,追着公交车跑 ')

if嵌套执行流程
在这里插入图片描述

5.1.2 应用:猜拳游戏

需求分析:

参与游戏的角色

  • 玩家:手动出拳
  • 电脑:随机出拳

判断输赢

  • 玩家获胜
玩家 电脑
石头 剪刀
剪刀
石头
  • 平局:玩家出拳 和 电脑出拳相同
  • 电脑获胜

随机做法:

  1. 导出random模块
import 模块名
  1. 使用 random模块中的随机整数功能
random.randint(开始,结束)
"""
提示:0-石头, 1-剪刀, 2-布
1. 出拳
	玩家输入出拳
	电脑随机出拳

2. 判断输赢
	玩家获胜
	平局
	电脑获胜
"""

# 导入 random模块
import random

# 计算电脑出拳的随机数字
computer = random.randint(0, 2)
print(computer)

player = int(input('请出拳:0-石头, 1-剪刀, 2-布:'))

# 玩家胜利 p0:c1 或 p1:c2 或 p2:c0
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('电脑获胜')

5.1.3 三目运算符

三目运算符也叫三元运算符或三元表达式。

语法如下:

条件成立执行的表达式 if 条件 else 条件不成立执行的表达式

示例:

a = 1
b = 2

c = a if a > b else b
print(c)

可以先写出表达式,再写接收变量

5.2 循环语句

作用: 让代码更高效的重复执行。

思考:假如我有个女朋友,有一天我们闹矛盾生气了,女朋友说:道歉,说 100遍“媳妇儿,我错了 ”。这个时候程序员会怎么做?
答:100遍print('媳妇儿,我错了 ')

思考:复制粘贴100次吗?
答:重复执行 100次一样的代码,程序中循环即可

分类: 在Python中,循环分为whilefor两种,最终实现效果相同。

5.2.1 while循环

语法:

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

示例:

# 循环的计数器
i = 0
while i < 100:
   print('媳妇儿,我错了 ')
   i += 1

print('任务结束')

应用一:
分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果 + 下一个数字 ( 前一个数字 +1)。

i = 1
result = 0
while i <= 100:
   result += i
   i += 1

# 输出5050
print(result)

注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成 1-100做累加。

应用二:
计算 1-100偶数累加和
分析:1-100的偶数和,即 2 + 4 + 6 + 8…,得到偶数的方法如下:

  • 偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加
  • 初始值为0 / 2 , 计数器每次累加 2

方法一:条件判断和 2 取余数则累加

i = 1
result = 0
while i <= 100:
   if i % 2 == 0:
       result += i
   i += 1

# 输出2550
print(result)

方法二:计数器控制

# 方法二:计数器控制增量为 2
i = 0
result = 0
while i <= 100:
   result += i
   i += 2

# 输出2550
print(result)

while循环嵌套

应用场景:
故事梗概:有天女朋友又生气了,惩罚:说 3遍“媳妇儿, 我错了 ”,这个程序是不是循环即可?但如果女朋友说:还要刷今天晚饭的碗,这个程序怎么书写?

while 条件:
   print('媳妇儿, 我错了 ')
print('刷晚饭的碗')

但如果女朋友还是生气,把这套惩罚要连续 3天都执行,有如何书写程序?

while 条件:
   while 条件:
       print('媳妇儿, 我错了 ')
   print('刷晚饭的碗')

语法:

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

总结: 所谓while循环嵌套,就是一个 while里面嵌套一个 while的写法,每个while和之前的基础语法是相同的。

示例:复现场景

j = 0
while j < 3:
   i = 0
   while i < 3:
       print('媳妇儿,我错了 ')
       i += 1
   print('刷晚饭的碗')
   print('一套惩罚结束 ----------------')
   j += 1

理解执行流程
当内部循环执行完成之后,再执行下一次外部循环的条件判断。
在这里插入图片描述

应用一: 打印星号 (正方形 ) ,一行输出 5个星号,重复打印5行

*****
*****
*****
*****
*****
# 重复打印5行星星
j = 0
while j <= 4:
   # 一行星星的打印
   i = 0
   while i <= 4:
       # 一行内的星星不能换行,取消 print默认结束符\n
       print('*', end='')
       i += 1
   # 每行结束要换行,这里借助一个空的 print,利用 print默认结束符换行
   print()
   j += 1

应用二: 打印星号 (三角形 )

*
**
***
****
*****

分析:一行输出星星的个数和行号是相等的,每行:重复打印行号数字个星号,将打印行星号的命令重复执行 5次实现打印5行。

# 重复打印5行星星
# j表示行号
j = 0
while j <= 4:
   # 一行星星的打印
   i = 0
   # i表示每行里面星星的个数,这个数字要和行号相等所以 i要和j联动
   while i <= j:
       print('*', end='')
       i += 1
   print()
   j += 1

九九乘法表
在这里插入图片描述

# 重复打印9行表达式
j = 1
while j <= 9:
   # 打印一行里面的表达式 a * b = a*b
   i = 1
   while i <= j:
       print(f'{i}*{j}={j*i}', end='\t')
       i += 1
   print()
   j += 1

5.2.2 for循环

语法:

for 临时变量 in 序列 :	# 序列:数据内部有多个数据,比如字符串,列表等
   重复执行的代码 1
   重复执行的代码 2
   ......

示例:

str1 = 'itheima'
for i in str1:
   print(i)

在这里插入图片描述

5.2.3 break和continue

break和continue是循环中满足一定条件退出循环的两种不同方式。

理解:
举例:一共吃 5个苹果,吃完第一个,吃第二个 …,这里 "吃苹果"的动作是不是重复执行?

情况一:如果吃的过程中,吃完第三个吃饱了,则不需要再吃第四个和第五个苹果,即是吃苹果的动作停止,这里就是 break 控制循环流程,即终止此循环。

情况二:如果吃的过程中,吃到第三个吃出一个大虫子 …,是不是这个苹果就不吃了,开始吃第四个苹果,这里就是 continue 控制循环流程,即退出当前一次循环继而执行下一次循环代码。

while情况一:break

i = 1
while i <= 5:
   if i == 4:
       print(f'吃饱了不吃了 ')
       break
   print(f'吃了第 {i}个苹果')
   i += 1

在这里插入图片描述
while情况二:continue

i = 1
while i <= 5:
   if i == 3:
       print(f'大虫子,第 {i}个不吃了 ')
       # 在continue之前一定要修改计数器,否则会陷入死循环
       i += 1
       continue
   print(f'吃了第 {i}个苹果')
   i += 1

在这里插入图片描述
for情况一:break

str1 = 'itheima'
for i in str1:
   if i == 'e':
       print('遇到e不打印 ')
       break
   print(i)

在这里插入图片描述
for情况二:continue

str1 = 'itheima'
for i in str1:
   if i == 'e':
       print('遇到e不打印 ')
       continue
   print(i)

在这里插入图片描述

注意: 在continue之前一定要修改计数器,否则会陷入死循环

5.2.4 else

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

5.2.4.1 while…else

需求:女朋友生气了,要惩罚:连续说 5遍“媳妇儿,我错了 ”,如果道歉正常完毕女朋友就原谅我了,这个程序怎么写?

i = 1
while i <= 5:
   print('媳妇儿,我错了 ')
   i += 1
print('媳妇儿原谅我了 ...')

思考:这个print是不是没有循环也能执行?

语法:

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

示例:

i = 1
while i <= 5:
   print('媳妇儿,我错了 ')
   i += 1
else:
   print('媳妇原谅我了,真开心,哈哈哈哈 ')

退出循环的方式
需求:女朋友生气,要求道歉 5遍:媳妇儿,我错了。道歉到第三遍的时候,媳妇埋怨这一遍说的不真诚,是不是就是要退出循环了?这个退出有两种可能性:

  • 更生气,不打算原谅,也不需要道歉了,程序如何书写?
  • 只一遍不真诚,可以忍受,继续下⼀一遍道歉,程序如何书写?
  1. break
i = 1
while i <= 5:
   if i == 3:
       print('这遍说的不真诚 ')
       break
   print('媳妇儿,我错了 ')
   i += 1
else:
   print('媳妇原谅我了,真开心,哈哈哈哈 ')

在这里插入图片描述

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

  1. continue
i = 1
while i <= 5:
   if i == 3:
       print('这遍说的不真诚 ')
       i += 1
       continue
   print('媳妇儿,我错了 ')
   i += 1
else:
   print('媳妇原谅我了,真开心,哈哈哈哈 ')

在这里插入图片描述

因为continue是退出当前一次循环,继续下一次循环,所以该循环在 continue控制下是可以正常结束的,当循环结束后,则执行了else缩进的代码。

5.2.4.2 for…else

语法:

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

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

示例

str1 = 'itheima'
for i in str1:
   print(i)
else:
   print('循环正常结束之后执行的代码 ')

退出循环的方式

  1. break终止循环
str1 = 'itheima'
for i in str1:
   if i == 'e':
       print('遇到e不打印 ')
       break
   print(i)
else:
   print('循环正常结束之后执行的代码 ')

在这里插入图片描述

没有执行 else缩进的代码。

  1. continue控制循环
str1 = 'itheima'
for i in str1:
   if i == 'e':
       print('遇到e不打印 ')
       continue
   print(i)
else:
   print('循环正常结束之后执行的代码 ')

在这里插入图片描述

因为continue是退出当前一次循环,继续下一次循环,所以该循环在 continue控制下是可以正常结束的,当循环结束后,则执行了 else缩进的代码。

发布了18 篇原创文章 · 获赞 0 · 访问量 1749

猜你喜欢

转载自blog.csdn.net/weixin_44159487/article/details/104819607