目录
十五、布尔类型和比较运算符
布尔类型的字面量:
True表示真(是、肯定)
Flase表示假(否、否定)
定义变量储存布尔类型数据:
变量名称 = 布尔类型字面量
注:可以通过使用比较运算符进行比较运算得到布尔类型的结果
#如下所示:
result = 66 > 6
test = ('a' == 'b')
#result的值为真,test的值为假
运算符 | 藐视 | 实例 |
== | 判断内容是否相等,满足为True,不满足为False | 如a=6,b=6, 则(a == b) 为 True |
!= | 判断内容是否不相等,满足为True,不满足为False | 如a=1,b=6, 则(a != b) 为 True |
> | 判断运算符左侧内容是否大于右侧满足为True,不满足为False | 如a=6,b=3, 则(a >b) 为 True |
< | 判断运算符左侧内容是否小于右侧满足为True,不满足为False | 如a=3,b=6, 则(a <b) 为 True |
>= | 判断运算符左侧内容是否大于等于右侧满足为True,不满足为False | 如a=3,b=3, 则(a >= b) 为 True |
<= | 判断运算符左侧内容是否小于等于右侧满足为True,不满足为False | 如a=3,b=3, 则(a <= b) 为 True |
十六、if语句
1、if语句的基本格式:
if 要判断的条件:
条件成立时,要做的事情
if语句的注意事项:
判断条件的结果一定要是布尔类型,True会执行if内的代码语句,False则不会执行
不要忘记判断后的:冒号
归属于if判断的代码语句块,需在前方填充4个空格缩进,python通过缩进判断代码块的归属关系。
num = int(input("请输入你的三连次数:"))
if num > 0 :
print("感谢你的三连,博主会继续努力的") #此行代码将在判断为真时输出
print("祝你心想事成") #此行代码没有填充4个空格,不属于if判断里面的语句,不管是否为真都会执行
判断为真:
判断为假:
2、else语句
当if语句判断为真时才会执行,那为假时我们也要输出怎么办呢,这个时候就要用else语句了
基本语法:
if 条件:
满足条件时的输出1
满足条件时的输出2
...
else:
不满足条件时的输出1
不满足条件时的输出2
...
注:else不需要判断条件,当if的条件不满足时,else执行
else的代码块,同样需要4个空格作为缩进
else与if配套使用,当存在多个相同缩进的if时,else遵循就近原则,与最近那个if配对
num = int(input("请输入你的三连次数:"))
if num > 0 :
print("感谢你的三连,博主会继续努力的") #此行代码将在判断为真时输出
else:
print("这次一定,好不好,555") #此行代码将在判断为假时输出
print("祝你心想事成") #此行代码没有填充4个空格,不属于if判断里面的语句,不管是否为真都会执行
3、elif
基本语句:
if条件1:
条件1满足应做的事情
条件1满足应做的事情
...
elif条件2:
条件2满足应做的事情
条件2满足应做的事情
...
elif条件N:
条件N满足应做的事情
条件N满足应做的事情
...
else:
所有条件都不满足应做的事情
所有条件都不满足应做的事情
...
注:可以完成多个条件的判断,elif可以写多个
判断是互斥且有序的,上一个条件满足后面的就不会执行了
可以在条件判断中,直接写input语句,节省代码量
else也可以省略不写,效果相当于3个独立的if判断
num = int(input("请输入你的三连次数:"))
if num > 10 :
print(f"{num}次啊!博主受宠若惊,肥肠感谢你的三连,博主会继续努力的")
elif num > 0:
print("博主肥肠感谢你的三连,窝会继续努力的")
else:
print("这次一定,好不好,555") #此行代码将在判断为假时输出
print("祝你心想事成") #此行代码没有填充4个空格,不属于if判断里面的语句,不管是否为真都会执行
4、判断语句的嵌套
许多逻辑的判断,是嵌套的,多层次的。对于这种需求,我们可以:自由组合if elif else,完成特定需求的要求,前提是满足缩进的要求
嵌套判断语句,一定要注意空格缩进,Python通过空格缩进来决定层次关系
基础语法格式:
if条件1:
满足条件1做的事情1
满足条件1做的事情2
if 条件2:
满足条件2做的事情1
满足条件2做的事情2
如上图,第二个if,属于第一个if内,只有第一个if满足条件,才会执行第二个if嵌套的关键点,在于:空格缩进,通过空格缩进,来决定语句之间的:层次关系
age =20
year = 3
level = 1
if age >= 18:
print("你是成年人")
if age< 30:
print("你的年龄达标了")
if year > 2:
print("恭喜你,年龄和入职时间都达标,可以领取礼物")
elif level > 3:
print("恭喜你,年龄和级别大表,可以领取礼物")
else:
print("不好意思,尽管年龄达标,但是入职时间和级别都不达标。")
else:
print("不好意思,年龄太大了")
else:
print("不好意思,小朋友不能领取喔")
if练习
你能看到这里了,逍 朽很高兴,希望我的文章能真的帮到你,咱们一起写道题巩固一下有关if的知识点吧!(可以将代码发到评论区,看看谁写的更好)
猜数字小游戏:定义一个数字(1~66,随机产生),通过5次判断来猜出来数字
要求:1.数字是电脑随机生成的 可以用random函数
2.有5次机会猜,通过5层嵌套判断实现,用input语句写在判断中(最少一次)
3.每次猜不中,会提示大了或者小了
提示:随机函数代码如下所示
import random # 导入 Python 内置的 random 模块,用于生成随机数
num = random.randint(1, 66) # 使用 random 模块的 randint 方法生成一个 1 到 66 之间(包括 1 和 66)的随机整数,并将其赋值给变量 num
解析:这道题的易错点在于
1.获取input后没用强制类型转换成数字int(强制类型转换的内容可以看小白笔记01)
2.用input语句写在判断中(最少一次)这个要求只能在最后的判断实现一次
import random # 导入 Python 内置的 random 模块,用于生成随机数
num = random.randint(1, 66) # 使用 random 模块的 randint 方法生成一个 1 到 66 之间(包括 1 和 66)的随机整数,并将其赋值给变量 num
guess_num = int(input("请输入你要猜测的数字"))
if guess_num == num :
print("好厉害,第一次就猜中了")
else:
if guess_num < num :
print("你猜测的小啦")
else:
print("你猜测的大啦")
guess_num = int(input("请输入你要猜测的数字"))
if guess_num == num :
print("恭喜,第二次就猜对啦")
else:
if guess_num < num :
print("你猜测的小啦")
else:
print("你猜测的大啦")
guess_num = int(input("请输入你要猜测的数字"))
if guess_num == num:
print("恭喜,第三次就猜对啦")
else:
if guess_num < num:
print("你猜测的小啦")
else:
print("你猜测的大啦")
guess_num = int(input("请输入你要猜测的数字"))
if guess_num == num:
print("恭喜,第四次就猜对啦")
else:
if guess_num < num:
print("你猜测的小啦")
else:
print("你猜测的大啦")
if int(input("请输入你要猜测的数字")) == num:
print("恭喜,第五次就猜对啦")
else:
print(f"很遗憾,数字为{num},你没有猜对")
十七、while循环
1.基本语法:
while 条件:
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
···(省略)···
注:条件需提供布尔类型结果,True继续,False停止
空格缩进不能忘
请规划好循环终止条件,否则将无限循环
i = 0
while i < 100:
print("坤,你太梅")
i+=1 # 没有这行代码,程序会一直输出“坤,你太梅”
# 注意:python里面没有i++这个写法
if练习再强化:
还记得if里面的练习么,在学习了while中,我们已经可以实现无限次数的猜数字了,一起来试试吧!(代码可以发至评论区喔)
设置一个范围1-66的随机整数变量, 通过while循环,配合input语句,判断输入的数字是否等于随机数
无限次机会,直到猜中为止
每一次猜不中,会提示大了或小了
猜完数字后,提示猜了几次
提示:
条件无限次机会,终止条件不适合用数字累加来判断
可以考虑布尔类型本身(True or False)
猜中数字需要提示几次猜中,就需要提供数字累加功能
import random # 导入 Python 内置的 random 模块,用于生成随机数
num = random.randint(1, 66) # 使用 random 模块的 randint 方法生成一个 1 到 66 之间(包括 1 和 66)的随机整数,并将其赋值给变量 num
outcome = True
frequency = 0
while outcome :
guess_num = int(input("请输入你要猜的数字"))
if guess_num == num :
print(f"恭喜你第猜对了,一共用了{frequency+1}次")
outcome = False
else:
if guess_num > num :
print("你猜的大啦")
else:
print("你猜的小啦")
frequency = frequency + 1
2.while循环嵌套
基础语法:
while 条件1:
条件1满足时,做的事情1
条件1满足时,做的事情2
条件1满足时,做的事情3
...(省略)...
while条件2:
条件2满足时,做的事情1
条件2满足时,做的事情2
条件2满足时,做的事情3
... (省略) ...
注意:注意条件的控制,避免无限循环
多层嵌套,与判断语句一致,主要基于空格缩进来确定层次关系
a = 0
while a < 100:
print(f"今天是第{a+1}天,准备成为真爱粉")
b = 1
while b <= 4:
print(f"练习唱跳rap的第{b}个2.5小时")
b +=1
print("努力成为鸽鸽")
a += 1
print(f"坚持到第{a/4}个2.5天,成为了黑子")
补充知识:
1.print输出不换行
默认print语句输出内容会自动换行,如果我们需要不换行的功能,在print语句中,加上end="即可输出不换行了 (end=''是使用的方法传参功能,后续会更新)
print("Hello", end='')
print("World", end='')
2.制表符\t
在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。它可以让我们的多行字符串进行对齐。
print("Hello World")
print("itheima best") # 使用空格无法对齐
print("Hello\tWorld")
print("itheima\tbest") # 使用\t后,可以对齐
while练习
通过补充的知识,我们完成上述的要求吧!
i = 1 # 初始化变量 i 为 1
while i < 10 : # 当 i 小于 10 时,执行循环
j = 1 # 每次进入内层循环前,初始化变量 j 为 1
while j <= i : # 当 j 小于等于 i 时,执行内层循环
print(f"{j} * {i} = {j*i}\t",end='') # 打印乘法表达式及结果,并使用制表符分隔,且不换行
j += 1 # j 自增 1
print() # 换行
i += 1 # i 自增 1
解释:内层循环要j <= i 的原因是要内层循环输出时能逐行添加
十八、for循环
除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:
while循环的循环条件是自定义的,自行控制循环条件
for循环是一种”轮询”机制,是对一批内容进行”逐个处理
1.基本语法:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
#定义字符串name
name = "ikun"
#for循环处理字符串
for x in name:
print(x)
for循环是将字符串的内容:依次取出所以,for循环也被称之为:遍历循环
语法中的:待处理数据集,严格来说,称之为:序列类型序列类型指,其内容可以一个个依次取出的一种类型,包括:字符串,列表,元组等,本质上是遍历:序列类型
注:同while循环不同,for循环是无法定义循环条件的。
只能从被处理的数据集中,依次取出内容进行处理,无法定义循环条件。
所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
同样的循环内的语句,需要有空格缩进
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部
如果在for循环外部访问临时变量:
实际上是可以访问到的
在编程规范上,是不允许、不建议这么做的
如需访问临时变量,可以预先在循环外定义它
2.for循环嵌套:
for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情 1
循环满足条件应做的事情2
循环满足条件应做的事情N
...
for 临时变量 in 待处理数据集(序列):
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
注意:需要注意缩进,嵌套for循环同样通过缩进确定层次关系
for循环和while循环可以相互嵌套使用
a = 0
for a in range(1,101):
print(f"今天是第{a}天,准备成为真爱粉")
for b in range(1,5):
print(f"练习唱跳rap的第{b}个2.5小时")
print("努力成为鸽鸽")
print(f"坚持到第{a/4}个2.5天,成为了黑子")
还记得99乘法表么,我们也用for循环试试吧
#通过外层循环控制行数
for i in range(1,10):
#通过内层循环控制每一行的数据
for j in range(1,i + 1):
#在内层循环中输出每一行的内容
print(f"{j}*{i}={j * i}\t",end='')
#外层循环可以通过print输出一个回车符
print()
十九、range函数
1.功能:
获得一个数字序列
2.语法格式:
语法①:range(num)
获得一个从0开始,到num结束的数字序列(不含num本身)
如,range(5)取得的数据是:[0,1,2,3,4]
语法②:range(num1,num2)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5,10)取得的数据是:[5,6,7,8,9]
语法③:range(num1,num2,step)
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5,10,2)取得的数据是:[5,7,9]
range练习:
定义一个数字变量num,内容随意,答案为100
并使用range()语句,获取从1到num的序列,使用for循环遍历它
在遍历的过程中,统计有多少偶数出现
提示:
1.序列可以使用:range(1,num)得到
2.偶数通过if来判断,判断数字余2是否为0即可
num = 100 # 定义上限值为 100
count = 0 # 初始化偶数计数器为 0
for x in range(1, num): # 遍历从 1 到 99 的数字
if x % 2 == 0: # 判断当前数字是否为偶数
count += 1 # 如果是偶数,计数器加 1
print(f"1 到{num}(不含{num})中有{count} 个偶数") # 输出偶数的数量
二十、break和continue
思考:无论是while循环或是for循环,都是重复性的执行特定操作
在这个重复的过程中,会出现一些其它情况让我们不得不:
暂时跳过某次循环,直接进行下一次
提前退出循环,不在继续
对于这种场景,Python提供continue和break关键字用以对循环进行临时跳过和直接结束
1.continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于:for循环和while循环,效果一致
for i in range(1, 100):
语句1
continue
语句2
上述代码:
在循环中,遇到continue就结束当次循环,进行下一次循环
所以,语句2是不会执行的
应用场景:
在循环中,因某些原因,临时结束本次循环。(通常和判断语句一起出现)
注意:在嵌套循环中,continue只可以控制:它所在的循环结束,无法对上层循环起作用
2.break
break关键字用于:直接结束循环
break可以用于:for循环和while循环,效果一致
for i in range(1, 100):
语句 1
break
语句 2
语句 3
上述代码:
在循环内,遇到break就结束循环了
所以,执行了语句1后,直接执行语句3了
注意:break关键字同样只可以控制:它所在的循环结束,无法对上层循环起作用