【python基础知识】6.布尔值和四种语句(break、continue、pass、else)

news2024/11/25 20:34:40

文章目录

  • 前言
  • 用数据做判断:布尔值
    • 两个数值做比较
    • 直接用数值做运算
    • 布尔值之间的运算
  • 四种新的语句
    • break语句
    • continue语句
    • pass语句
    • else语句
    • 循环小练习

前言

Hi,你来了。

上一关我们学习了for循环和while循环,让我们复习回顾一下:

在这里插入图片描述
在这里插入图片描述
然后也对比了什么是适合用for循环,什么时候适合用while循环:

在这里插入图片描述
这一关我们的任务是更深入的学习循环语句的用法:

在这里插入图片描述
我们还是接着上一关的while循环讲起,还记得while循环怎么写吧?

a = 0
while a < 5:
    a = a + 1
    print(a)

之前说到,while循环是需要有一个“条件”的,当条件被满足,才能开启循环。

在上面这个小例题中,这一点不难理解:我先定义了变量a,然后将0赋值给a;接下来,面对a<5这个条件,计算机就会判断条件满足,用术语来说就是条件为【真】(True),然后开启循环。

直到a+1不断执行,到了 a=5时,条件a<5不再满足,即条件为【假】(False),这段循环就结束了。

真真假假,计算机是怎么做出这样的判断的呢?简单的数学题倒是一看便知,但当逻辑更复杂的时候,计算机怎么决定自己要不要进行下一步行动呢?比如下面这道小题:

while False:
    print('while False')

我猜你的表情大概是ヾ(。ꏿ﹏ꏿ)ノ゙这样的。没事,很快你就能秒懂了,先不理它。

要看懂这种奇怪的条件判断,就要熟悉一个编程基础知识:布尔值。

用数据做判断:布尔值

之前我们提到,计算机利用数据有三种方式:1.直接使用数据,2.计算和加工数据,3.用数据做判断。

除了while循环,我之前学过的if…elif…else语句,也涉及到【利用数据用做逻辑判断】。当逻辑判断通过才会继续执行:
在这里插入图片描述
当然,if和while有个显著的区别。那就是if语句只会执行一次,而while是循环语句,只要条件判断为真,就一直循环执行。

这个“判断”的过程,在计算机的世界里是如何发生的呢?

计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”),没有灰色地带。这个计算真假的过程,叫做【布尔运算】。

而True和False,也就叫做【布尔值】。

我们举个例子,请你运行以下代码,看看结果是True还是False:

print(3<5)
print(3>5)
print('长安'=='长安')  
print('长安'!='金陵') 

运行结果:

True
False
True
True

print()括号内的计算其实就是【布尔运算】。终端上出现的True和False我们称为【布尔值】。

第1行和第2行代码很简单啦。我们看后面两行:两个字符串’长安’相等,结果正确,所以打印为True。而字符串’长安’和字符串’金陵’做比较,结果不相等,!=代表不等号,结果正确,打印为True。

只有当条件判断为True时,if和while后面的子句才会执行下去。

好,现在我们来体验一下上面出现过的这段奇怪的代码:

while False:
    print('while False')
print('a')

运行结果:

a

这是因为while循环执行,必须要while后的条件为“真”,而【布尔值】False本身就是“假”,所以这个循环一次都没运行就结束了。

同理,3>5这个条件恒为“假”,如果把while False换成while 3>5,效果会是一样的——什么都不会出现。

再体验一下下面这个代码:

a=''
while a!='我错了':
    a=input('告诉我,你错了没?')
print('知错能改,善莫大焉!')

运行结果:

告诉我,你错了没?没
告诉我,你错了没?滚
告诉我,你错了没?啥
告诉我,你错了没?我错了
知错能改,善莫大焉!

只要a!='我错了'这个条件成立的时候,就会不停的输出“告诉我你错了没”,只有这个条件不成立了,也就是输入“我错了”程序才会退出while循环,打印出“知错能改,善莫大焉” 。

那么,如果我用while True或者while 3<5来做条件,会怎么样?

不错,程序将会不限次数地运行,陷入【死循环】,比如以下的代码会一直打印’while True’,这里就不让大家运行啦。

while True:
    print('while True')

这是因为【布尔值】True直接把条件判断的结果设置为真,也就是条件永远正确。所以代码会无限循环,必须手动强制退出(按ctrl+c退出,或者点击本地编译器的停止即可)。

【布尔值】对条件判断语句有一样的效果:

if False:
    print('if False')

if True:
    print('if True')

运行结果:

if True

我们会发现,只有if True成功运行,将结果显示在了屏幕上。当然,if语句不会陷入死循环。

我们做一个总结:

在这里插入图片描述
现在我们知道了什么是布尔运算以及布尔值的作用,我们接着学习【布尔运算】的三种方式。其中的第一种,就是作比较。

两个数值做比较

在这里插入图片描述
其实刚才我们print(3>5),计算机会先做一次布尔运算,判断3是否大于5,然后再把判断的结果以【布尔值】的方式打印出来。

用两个数值做比较的【布尔运算】,主要包含以下情况:

在这里插入图片描述
主要记住前两种==和!=,这两种在条件判断中用得非常多。还有大于>和小于<了,这都属于数学常识了。

icon
另外,特别提醒大家一点:在代码中,A == B表示A和B相等,==表示相等关系;而=表示给变量赋值。===虽然长得相似,但没有任何关系。

对于===,初学者很容易混淆写错,导致报错。请你来修改一下下面的代码,让它能正确运行:

password = input('请输入密码:')

if password = 'abc':
    print('密码正确!')
else:
    print('密码错误!')

怎么样,改对了吧!
参考答案:

password = input('请输入密码:')

if password == 'abc':
    print('密码正确!')
else:
    print('密码错误!')

我们接着看布尔运算的第二种方式:直接用数值做运算。

直接用数值做运算

在这里插入图片描述
请看这段代码:

if 1:
    print('熊猫')

是不是觉得怪怪的,没关系,我们来运行一下,看终端会给我们一个啥样的结果。

运行结果:

熊猫

终端打印出了一个字符串熊猫。我们看看这两行代码,这是一段使用了条件判断的代码。因为终端打印出了’熊猫’,说明 if 后面的条件为真。

可是怪就怪在,if后面接的不像是一个“条件”,而是一个数字。

其实,整数1在这里就是作为一个条件,被判断为真(True)。这就是数值本身作为一个条件,被判断真假的情况。

那为什么可以这样操作呢?

因为在Python中已经设定好什么数据为真,什么为假。假的是有限的,那么除了假的,就都是真的。请看下图:

在这里插入图片描述
这个表的左侧一列,它们在Python中被判定为假,比如False、0、‘’ (空字符串)等等。假的东西是有限的,那么除了假的,其他就都是真的。比如上一个例子中出现的整数1,就是真的。

至于None,它代表的是【空值】,自成一派,数据类型是NoneType。要注意它和0的区别,0是整数0,可并非什么都没有。

好,现在请看这段代码,然后回答问题:

if '开心':
    print('熊猫')
if '':
    print('熊猫')

'开心’这个字符串作为一个条件时,被判定为真,所以if后面的条件满足,计算机会执行if的下一行代码;而 ‘’(空字符串)本身作为一个条件时,被判定为假,if后面的条件为假,计算机不会执行if的下一行代码。

运行结果:

熊猫

我们可以使用bool()函数来查看一个数据会被判断为真还是假。这个函数的用法与type()函数相似(还有印象吧~),在bool()函数括号中放入我们想要判断真假的数据,然后print出来即可。

我们来做个试验,用bool()函数把前面我们提到的各种数据都放进去判断一下,打印出来看看。请阅读代码后再直接运行:

# 请阅读代码后再直接运行

print('以下数据判断结果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))


print('以下数据判断结果都是【真】:')
print(bool(True))
print(bool(1))
print(bool('abc'))

运行结果:

以下数据判断结果都是【假】:
False
False
False
False
以下数据判断结果都是【真】:
True
True
True

好啦,现在你明白了“直接用数值做布尔运算”是怎么一回事,再来看看第三种情况。

布尔值之间的运算

在这里插入图片描述
你会接触到and、or、not、in、not in五种运算,别怕,只是看起来多,我保证不难。

还是用例子来说明吧。我们先看看【and】和【or】。请先阅读代码,然后直接运行:

# 请先阅读代码,然后直接运行
a = 1
b = -1

print('以下是and运算')
if a==1 and b==1:    # 【b实际上是-1】
    print('True')
else:
    print('False')

print('以下是or运算')
if a==1 or b==1:  # 【b实际上是-1】
    print('True')
else:
    print('False')

运行结果:

以下是and运算
False
以下是or运算
True

注意到屏幕上的结果了么?

在这里插入图片描述
a==1 and b==1的意思是【a=1并且b=1】,要两个条件都满足,才能判断为True,而a==1 or b==1的意思是【a=1或者b=1】,只要两个条件满足一个,就能判断为True。

这里把and和or的计算逻辑和大家做一个总结:

在这里插入图片描述
在这里插入图片描述
我们来做道练习题巩固一下,请看代码,判断终端执行结果:

a = 5
b = -1
c = 0
d = 7

if a<b and c<d:
    print('True')
else:
    print('False')

请问,终端会输出什么结果?

a<b为假,c<d为真,两个条件都要满足才行,所以判断为假,会print出False。

接下来我们看看【not】运算。这个运算很简单,表示翻转的意思。not True就等于False,not False就等于True。

在这里插入图片描述
最后,我们讲一下【in】和【not in】两种运算。

【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之。这个超简单的。

list = [1,2,3,4,5]

a = 1
b = 6
c = 0

你用肉眼就能判断a,b,c三个变量在不在(in或是not in)列表list里面了对吧?来简单运行一个试试呗。

# 直接运行代码即可
list = [1,2,3,4,5]
a = 1

# 做一次布尔运算,判断“a是否在列表list之中”
print(bool(a in list))
print(bool(a not in list))

运行结果:

True
False

如果涉及到的数据集合是字典的话,【in】和【not in】就可以用来判断字典中是否存在某个【键】:

#运行结果会是什么你应该很清楚啦,看看就好~
dict = {'法国':'巴黎','日本':'东京','中国':'北京'}
a = '法国'

print(bool(a in dict))

到这里,我们学完了5种布尔值的运算方式,不难,就是有点多,我还有点啰嗦,对吧~

让我们对所有的布尔计算方式做个总结。会有3张总结图,不用细看,保存下来整理成你自己的笔记吧~

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
掌握了布尔值,以后我们可以写出更加简洁的while循环。

比如说,上节课用while循环重复执行100遍任务,代码会这样写:

i = 1
while i<101 :
   print('把这句话打印100遍')
   i = i+1

今天理解布尔运算原理后,可以把这段代码改造成更“程序员”的方式:

i = 100
while i:
   print('把这句话打印100遍')
   i = i-1

你看懂了为什么这两种写法效果是一样的么?

我再解释一下。第二种写法,一开始i是100,while i的布尔运算结果是True。然后每次循环,第4行代码会让i的数值减1。

直到i减少到0的时候,0的布尔运算结果是False,导致while 0会结束循环。所以这样的whlie循环也能正好重复一百遍。这种方式对计算机来说是更简单的,因为计算次数减少了(减少了计算i<100,i<99……这个过程),这也是程序员在写代码时的思考方式。

我们以后还会经常看到布尔运算和布尔值在代码中的运用,今天对布尔值的讲解就到这里。

接下来,是本关的第二个主题:循环里的四种新语句

四种新的语句

这4种新语句配合for循环和while循环,可以让循环发挥更多的功能。我们逐个来看。

break语句

我们先来看看break语句。break的意思是“打破”,是用来结束循环的,一般写作if…break。它的写法长这样:

# break语句搭配for循环
for...in...:
    ...
    if ...:
        break

# break语句搭配while循环
while...(条件):
    ...
    if ...:
        break

在这里,if…break的意思是如果满足了某一个条件,就提前结束循环。记住,这个只能在循环内部使用。

在这里插入图片描述
我们运行一下代码来理解这一点。下面是一个for循环代码,本来会循环5次,但循环到第4次的时候就被break语句打断,然后结束循环了。

# 请运行代码体验效果

for i in range(5):
    print(i)
    if i>2:  # 当i等于3的时候触发
        break # 结束循环

运行结果:

0
1
2
3

下面是一个while循环代码,本来会循环5次,但循环到第3次的时候就被break语句打断,然后结束循环了。

# 请运行代码体验效果

i = 0
while i<5:
    print(i)
    i = i+1
    if i==3:  # 当i等于3的时候触发
        break # 结束循环
    

运行结果:

0
1
2

小小地提醒你,break前面一共缩进了【8个空格】。

这是因为if之下的语句要缩进4个空格(按一次Tab键),这里的if…break又嵌套在while或for循环中,而循环语句本身又要缩进4个空格。这样一来,break就缩进了【4+4=8】个空格(按两次Tab键)。【注】:Tab键和空格键不能同时混用。

接下来,看个轻松点的小说案例,巩固一下知识。

《西游记》里面有一个车迟国,车迟国里面有个陈家庄,陈家庄的河里有一个鲤鱼精,每一年都要陈家庄上供一对童男童女给自己吃,庄里的人家真是苦不堪言。

在这里插入图片描述
这种年复一年的循环状态,在唐僧师徒来到这里后,结束了。因为孙悟空制服了这个鲤鱼精,百姓再也不用受苦了!真好。

如果用Python来展示这个故事:

while True:    
    print('上供一对童男童女')
    t = input('孙悟空来了吗')
    if t == '来了':
        break
print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')

来运行看看这段代码:我希望你随便输入几个数据,点击enter,围观程序循环;然后再输入“来了”,点击enter,结束循环。

运行结果:

上供一对童男童女
孙悟空来了吗m
上供一对童男童女
孙悟空来了吗dfsa 
上供一对童男童女
孙悟空来了吗来了
孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了

第1行代码:while True我们在上面见过了,这个条件恒为真,就会开启无限循环。而while True常和break语句搭配使用,你也可以学着使用这种写法。

第2行代码:打印上供一对童男童女的字符串。第3行代码:请用户输入一个信息。

第4行代码:如果用户输入的信息是 “来了”,那么if后面的条件被满足,执行下面的代码break;如果没有,回到while True 继续循环。

第5行代码:break表示结束循环,然后去执行循环外部的代码,即第6行代码,打印孙悟空制服了鲤鱼精的字符串。

【练习时间来咯】接下来是你表现的机会!我们来练习一下break语句的编程。

我想请你写下这样一个程序,功能是请用户输入密码,如果输入了错误的密码,就一直循环请用户继续输入;如果输入了正确的密码,就结束循环。设定这个密码为’小龙女’。(其实之前做过这题,有印象吗?)

提示:① 用while True开启无限循环。② 在循环内部用input() 函数获取用户的数据。 ③ 使用if…break,如果变量p == ‘小龙女’,那就break结束循环。否则又开始循环。④ 结束循环后,打印–通过啦~

怎么样,完成了吗?参考代码是这样的:

while True:
    p = input('请输入你的密码:')
    if p == '小龙女':
        break
print('通过啦')

第1行:用while True 开启了一个无限循环。你也可以用while 1 或其他形式开启一个无限循环。

第2行:用input() 函数获取到了一个数据。第3行:如果这个数据等于之前设定的密码,那么就第4行:结束循环。如果这个数据不等于之前设定的密码,那就回到第1行while True继续循环。

第5行:结束循环后,就打印–通过啦。这已经是循环外部的代码了,所以没有缩进噢。

break子句,咱们就讲到这里。接下来“继续”,continue语句。

continue语句

continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始。

它的写法是这样的:

# continue语句搭配for循环
for...in...:
    ...
    if ...:
        continue
    ...

# continue语句搭配while循环
while...(条件):
    ...
    if ...:
        continue
    ...

在这里插入图片描述
请观察代码,然后运行代码看看是什么结果:

# 观察代码,然后运行代码看看是什么结果

# continue语句搭配for循环
for i in range(5):
    print(i)
    if i==3:  # 当i等于3的时候触发
        continue # 回到循环开头
    print('这句话在i等于3的时候打印不出来')

# continue语句搭配while循环
i = 0
while i<5:
    print(i)
    i = i+1
    if i==3:  # 当i等于3的时候触发
        continue # 回到循环开头
    print('这句话在i等于3的时候打印不出来')
    

运行结果:

0
这句话在i等于3的时候打印不出来
1
这句话在i等于3的时候打印不出来
2
这句话在i等于3的时候打印不出来
3
4
这句话在i等于3的时候打印不出来
0
这句话在i等于3的时候打印不出来
1
这句话在i等于3的时候打印不出来
2
3
这句话在i等于3的时候打印不出来
4
这句话在i等于3的时候打印不出来

上面的代码,当i==3的时候会触发continue语句,于是回到了循环开头,跳过了一句print语句。

这样的数字游戏是不是有点无聊?不如再用一个小说例子来解解闷吧。《天龙八部》里面有这样一个情节:西夏公主招亲选婿,吸引了许许多多的青年才俊。

在这里插入图片描述
西夏公主挑驸马的方式是,是问这些青年3个问题。

在这里插入图片描述
这三个问题,只有连续答对,才能判定他就是西夏公主的意中人;否则,只要有任何一题错,都要换人从头开始回答问题。

事实上,西夏公主曾和她的意中人虚竹邂逅于一个黑暗的冰窖之中,但两人不知对方姓名,只互称呼“梦姑”和“梦郎”,两人也看不清彼此的脸。因此,西夏公主为了找到虚竹,才进行招亲,并对候选者问出这三个问题。

如果用Python来描述这个故事,我想应该是这样的:

while True:
    q1 = input('第一问:你一生之中,在什么地方最是快乐逍遥?')
    if q1 != '黑暗的冰窖':
        continue
    print('答对了,下面是第二问:')
    q2 = input('你生平最爱之人,叫什么名字?')
    if q2 != '梦姑':
        continue
    print('答对了,下面是第三问:')
    q3 = input('你最爱的这个人相貌如何?')
    if q3 == '不知道':
        break
print('都答对了,你是虚竹。')

别怕哈,表面上看这个代码老长老长,其实不难,我们先看1-5行代码。

第1、2行我就不说了,从第3行开始,当第一问的答案不是“黑暗的冰窖”时,就说明答错了,必须从头开始,所以使用continue提前开始循环,回到第1行代码。

如果在第3行,有人回答对了,那么if q1的条件为假,就会继续执行第5行的代码。之后的代码都是同样的道理。

再看10-13行代码,到了最后一行,如果答对,就可以用break结束循环。答错的话,重新开始,这里就不需要continue了。

为了让你更好地理解,请你运行下面的代码:①你可以随便输入,感受一下循环的逻辑,比如第一个答案对,第二个答案错;或者第一、二个答案对,第三个答案错。②当你玩得差不多了,请依次输入‘黑暗的冰窖’,点击enter,再输入‘梦姑’,点击enter,再输入‘不知道’,点击enter,就能结束循环。

while True:
    q1 = input('第一问:你一生之中,在什么地方最是快乐逍遥?')
    if q1 != '黑暗的冰窖':
        continue
    print('答对了,下面是第二问:')
    q2 = input('你生平最爱之人,叫什么名字?')
    if q2 != '梦姑':
        continue
    print('答对了,下面是第三问:')
    q3 = input('你最爱的这个人相貌如何?')
    if q3 == '不知道':
        break
print('都答对了,你是虚竹。')

运行结果:

第一问:你一生之中,在什么地方最是快乐逍遥?天上
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对了,下面是第二问:
你生平最爱之人,叫什么名字?和尚
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对了,下面是第二问:
你生平最爱之人,叫什么名字?梦姑
答对了,下面是第三问:
你最爱的这个人相貌如何?啥玩意儿
第一问:你一生之中,在什么地方最是快乐逍遥?^[[A^[[A
第一问:你一生之中,在什么地方最是快乐逍遥?黑暗的冰窖
答对了,下面是第二问:
你生平最爱之人,叫什么名字?梦姑
答对了,下面是第三问:
你最爱的这个人相貌如何?不知道
都答对了,你是虚竹。

好,你可以看到continue的作用就是就是当某个条件为真时,又提前回到循环,而不会执行下面的代码。

关于continue语句,我就讲到这里。接下来是pass语句。

pass语句

pass语句就非常简单了,它的英文意思是“跳过”。

我们举个例子,请你运行代码体验一下:

#请你运行代码体验一下

a = int(input('请输入一个整数:'))
if a >= 100:
    pass
else:
    print('你输入了一个小于100的数字')

运行结果:

请输入一个整数:108

这个代码的意思是:当a>=100的时候,跳过,什么都不做。其他情况,也就是a<100的时候,执行一个print语句。

如果没有pass来占据一个位置表示“什么都不做”,以上的代码执行起来会报错。(请你先体验一下报错,然后把pass语句加上。)

# 请体验一下报错,然后把pass语句加上

a = int(input('请输入一个整数:'))
if a >= 100:

else:
    print('你输入了一个小于100的数字')

好,pass语句就是这么简单,pass!

else语句

最后一种else语句,我们在条件判断语句见过【else】,其实,else不但可以和if配合使用,它还能跟for循环和while循环配合使用。

举一个例子;

for i in range(5):
    a = int(input('请输入0来结束循环,你有5次机会:'))
    if a == 0:
        print('你触发了break语句,循环结束,导致else语句不会生效。')    
        break
else:
    print('5次循环你都错过了,else语句生效了。')

以上这段代码,请你做两种尝试:1.连续五次不输入零;2.输入一次0跳出循环。完成一种尝试后,重新运行,再来一次尝试。

for i in range(5):
    a = int(input('请输入0结束循环,你有5次机会:'))
    if a == 0:
        print('你触发了break语句,导致else语句不会生效。')    
        break
else:
    print('5次循环你都错过了,else语句生效了。')

所以,用一句话总结,当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。

在while循环中,else的用法也是如此,格式一模一样:

while...(条件):
    ...
else:
    ...

我们来做一个练习:把之前那段for循环的代码改成while循环,要求运行起来效果一模一样。

参考代码在这里:

i = 0
while i<5: 
    a = int(input('请输入0结束循环,你有5次机会:'))
    i = i+1
    if a == 0:
        print('你触发了break语句,导致else语句不会生效。')    
        break
else:
    print('5次循环你都错过了,else语句生效了。')

到这里我们4种语句都学完了,我们做个总结:

在这里插入图片描述
由于循环的知识很重要,所以最后和大家再共同完成一个例题。

循环小练习

大家应该玩过一个小游戏,就是一个人在心里想好一个数,比如24,然后让另一个人猜。如果他猜的数比24小,告诉他“太小了”,如果他猜的数比24大,告诉他“太大了”。

我们一起来完成这个“猜大小游戏”的编程,我的思路大概是这样的:

1.一个人在心里想好一个数————这个数字是提前准备好的,可以设置一个变量来保存这个数字。我就设置我的数字为24。

2.然后让另一个人猜————所以可以使用input()函数来接收另一个人输入的数字,并用int()转化为整数。

3.直到猜对为止————天知道几次才能猜对,所以肯定需要用到循环,并且由于不知道要循环几次,所以适合while循环。

4.如果他猜的数比24小就告诉他“太小了”,如果他猜的数比24大就告诉他“太大了”——这里一看“如果……就……”的描述,就知道应该用if…else…写一个条件判断。

在这里插入图片描述
这道题目稍微有点挑战,你来尝试一下吧(如果实在棘手可以看参考代码):

secret = 24  #设定秘密数字
while True:       
    guess = input('你来猜猜我的秘密数字是多少:')   #输入猜测数字
    if int(guess)==secret:  #数字对比
        print('正确!你很棒哦。') 
        break
    elif int(guess)>secret:
        print('你猜的太大了,请重新猜猜~')
    else:
        print('你猜的太小了,请重新猜猜~')

第一行代码完成了秘密数字的设定,即设定变量secret,并把赋值给它。

第二行代码,while True意味这是一个无限循环,需要想办法结束。冒号后的几行代码就是执行语句,逻辑顺序是先输入猜测的数字,再用if进行判断。

猜错了则会进入下一次循环,需要再次输入猜测的数字并用if进行判断。猜对了则会结束游戏。

那要怎么在猜对的时候结束游戏呢?这就用到了break语句。

假如我们改变一下题目:一个人在心里想好一个数,比如24,然后让另一个人猜。如果他猜的数比24小,告诉他“太小了”,如果他猜的数比24大,告诉他“太大了”,这个游戏只能猜3次,3次都猜不中,就告诉他“失败了”。

请你再思考一下,这时候的解决方法应该是什么?

在这里插入图片描述
这次的挑战更难一些了,请思考“??”处应该用什么知识解决问题,然后再尝试编程吧:

参考代码:

secret = 24
for i in range(3):
    guess = input('guess which number is my secret:')
    if  int(guess) ==secret:
        print('正确!你很棒哦。')  #输出结果
        break
    elif int(guess)>secret:
        print('你猜的太大了,请重新猜猜~')
    else:
        print('你猜的太小了,请重新猜猜~')
else:
    print('给你3次机会都猜不到,你失败了。')

既然是三次机会,那么我们就利用range(3)生成0,1,2的序列,三次循环之后即会结束。

这里我们重点看两个地方:一是break,二是倒数第二句的else。

在for…in…循环中也可以使用break,正常情况下,三次机会用完之后就结束循环,但如果第一次就猜对了,也需要结束循环。前者我们能用range(3)解决,后者则依靠break语句。

for…in…可以和else语句搭配使用。意思是在for…in…循环结束之后,执行else语句里的命令。不过如果for…in…是因为break结束的就不会执行else语句里的命令。

所以如果第一次就猜对了,break会结束循环,计算机会告诉你right,但不会打印出else里面的“给你3次机会都猜不到,你失败了。”

其实编程就是这样,不断拆解,不断动手,不断接受失败,于是不断成长。

好啦,关于“循环”的学习就告一段落了,最后送给同学们一句话:

在这里插入图片描述

哈哈,get到了吗?这是终生学习的意思,while True 开启了一个死循环,一直执行learn() 这个学习的函数,所以代表着终生学习。

当然真实的Python中没有learn()这个函数,但是我们的学习却永远不会止步。

为不断学习新知识的各位感到骄傲,大家快去多多练习吧~

我们下一关见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/978847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习笔记|定时器|STC中断|定时器时间计算|STC32G单片机视频开发教程(冲哥)|第十一集:定时器的作用和意义

文章目录 1.定时器的作用和意义定时器中断定时器是定时器和计数器的统称。 2.STC32G单片机定时器使用原理2.1 先设置功能为定时器/计数器(本质都是加法计数器)2.2、在定时器模式下&#xff0c;设置不分频或者12分频∶Tips&#xff1a;选择不分频还是12分频2.3、定时器的工作模式…

初探Vue.js及Vue-Cli

一、使用vue框架的简单示例 我们本次的vue系列就使用webstorm来演示&#xff1a; 对于vue.js的安装我们直接使用script的cdn链接来实现 具体可以参考如下网址&#xff1a; https://www.bootcdn.cn/ 进入vue部分&#xff0c;可以筛选版本,我这里使用的是2.7.10版本的&#xff…

正则的高级玩法

在正则表达式中&#xff0c;括号涉及的问题比较多&#xff0c;所以这里单独拿出来讲。 分组 如果量词所限定的元素不是一个字符或者字符组&#xff0c;而是一系列字符或者子表达式&#xff0c;就需要使用括号将他们括起来&#xff0c;表示为“一组”&#xff0c;构成单个元素…

【python零基础入门学习】python基础篇之系统模块调用shell命令执行(四)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

接入Websocket,自动接收CSDN短消息

最近在研究Websocket功能&#xff0c;本来想接入抖音和快手的弹幕功能&#xff0c;以及短消息功能。 在了解的过程中&#xff0c;也开发了一些测试项目。 这不是&#xff0c;就把CSDN的短消息项目给弄出来了。 直接上代码&#xff1a; # !/usr/bin python3 # -*- encodingu…

U盘插电脑没反应?学会这3个方法就够了!

“谁能帮帮我呀&#xff01;u盘里有超级重要的文件哎&#xff01;但是将u盘插电脑后一点反应都没有&#xff01;我还需要将u盘里的文件导出来呢&#xff01;” U盘&#xff08;又称闪存驱动器或USB闪存驱动器&#xff09;是我们生活中常用的便携式存储设备之一&#xff0c;但在…

Python实现猎人猎物优化算法(HPO)优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

『虫无涯→_→读书推荐02期』|全面系统的〖Effective软件测试〗带你完成所有不同类型的测试,GO

目录 我看的书 我的书评/推荐理由 书籍的作者 书籍内容 赠书活动 我看的书 首次看到这本书的封面的时候&#xff0c;我被那个数字惊呆了&#xff0c;【助理软件研发提升10倍质量】&#xff0c;这对我产生了足够了吸引力。因为这个数字是非常的客观的&#xff1b;至于书…

DAY08_MyBatisPlus——入门案例标准数据层开发CRUD-Lombok-分页功能DQL编程控制DML编程控制乐观锁快速开发-代码生成器

目录 一 MyBatisPlus简介1. 入门案例问题导入1.1 SpringBoot整合MyBatisPlus入门程序①&#xff1a;创建新模块&#xff0c;选择Spring初始化&#xff0c;并配置模块相关基础信息②&#xff1a;选择当前模块需要使用的技术集&#xff08;仅保留JDBC&#xff09;③&#xff1a;手…

@PostConstruct使用

PostConstruct是Java自带的注解&#xff0c;在方法上加该注解会在项目启动的时候执行该方法&#xff0c;也可以理解为在spring容器初始化的时候执行该方法。 从Java EE5规范开始&#xff0c;Servlet中增加了两个影响Servlet生命周期的注解&#xff0c;PostConstruc

Goland2023版新UI的debug模式调试框按钮功能说明

一、背景 Jetbrains家的IDE的UI基本都是一样的&#xff0c;debug模式的调试框按钮排列也是一致的&#xff0c;但是在我使用Goland2023版的新UI时&#xff0c;发现调试框的按钮变化还是很大的&#xff0c;有一些按钮被收起来了&#xff0c;如果看之前的博客会发现有一些文中的旧…

15年安全老兵详解《孤注一掷》里的黑客技术及杀猪盘

做为网络安全从业者&#xff0c;今天谈谈电影《孤注一掷》涉及到的相关的黑客攻防技术和场景。 电影制作方也算是用心了&#xff0c;隔壁王大娘提醒我男主张艺兴饰演的潘生与编程语言Python在读音上似乎有点弦外之音&#xff0c;有点类似或谐音。 开篇男主潘生从标准码农衬衫打…

排序算法:选择排序(直接选择排序、堆排序)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关排序算法的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

网络安全人才供需严重失衡,预计2027年缺口将扩大到300万人

网络安全法正式实施5年了。 这5年&#xff0c;是网络安全法治化体系化日趋完善的5年&#xff0c;也是我国网络安全产业黄金发展的5年。 赛迪顾问数据显示&#xff0c;2016年&#xff0c;我国网络安全市场规模为336.2亿元&#xff1b;而2021年&#xff0c;市场规模达到900多亿…

java IO流(四) 数据流 序列化流

数据流 再学习一种流&#xff0c;这种流在开发中偶尔也会用到,我们想把数据和数据的类型一并写到文件中去&#xff0c;读取的时候也将数据和数据类型一并读出来。这就可以用到数据流&#xff0c;有两个DataInputStream和DataOutputStream. DataOutputStream类 写入特定类型 D…

JS 方法实现复制粘贴

背景 以前我们一涉及到复制粘贴功能&#xff0c;实现思路一般都是&#xff1a; 创建一个 textarea 标签 让这个 textarea 不可见&#xff08;定位&#xff09; 给这个 textarea 赋值 把这个 textarea 塞到页面中 调用 textarea 的 select 方法 调用 document.execCommand…

Java逻辑控制

目录 一、顺序结构 二、分支结构 1、if语句 &#xff08;1&#xff09; 语法格式1​编辑 &#xff08;2&#xff09;语法格式2​编辑 &#xff08;3&#xff09;语法格式3 2、switch 语句 三、循环结构 1、while循环 2、break 3、continue 4、for 循环 5、do whil…

Pycharm通用设置个性化设置

Pycharm通用设置&个性化设置 通用设置取消打开Pycharm自动进入项目开启【Ctrl鼠标滑轮】放大缩小字体 个性化设置设置彩虹括号 通用设置 取消打开Pycharm自动进入项目 选择选择菜单【File】>【Settings】进入设置页面选择【Appearance & Behavior】>【System S…

dantax参数调优

dantax参数调优 1.speed调优 可能会导致数据倾斜 处理的速度不同&#xff0c;可能会导致job非常慢 举例子&#xff0c;比如总限速是每秒100条record&#xff0c;其中第一个channel速度是每秒99条record&#xff0c;第二个channel是每秒1条record&#xff0c;加起来是每条100条…

Helm Deploy Online Rancher Demo

文章目录 简介预备条件在线安装 Rancher Helm Chart选择 SSL 配置安装 cert-managerHelm 安装 Rancher验证 Rancher Server 是否部署成功 简介 Rancher 是一个开源的企业级全栈化容器部署及管理平台。已有超过 1900 万次下载&#xff0c;4000 生产环境的应用。 简单的说&…