鱼C论坛

 找回密码
 立即注册
查看: 1073|回复: 11

[已解决]一道课后题

[复制链接]
发表于 2019-8-13 16:48:04 | 显示全部楼层 |阅读模式
5鱼币
关于这道题:


count = 3
password = 'FishC.com'

while count:
    passwd = input('请输入密码:')
    if passwd == password:
        print('密码正确,进入程序......')
        break
    elif '*' in passwd:
        print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
        continue
    else:
        print('密码输入错误!您还有', count-1, '次机会!', end=' ')   
    count -= 1


想问一下这道题密码输入正确后,break只能终止一层循环,也就是if循环,按道理还会再执行while循环,因为count还不等于0啊,应该还会再跳出 请输入密码, 难道我哪里理解错了?
最佳答案
2019-8-13 16:48:05
break 就是终止当前循环的,比如 for ,while。if语句本身是判断语句,整个if语句块都属于循环体中,所以即使break在if语句中,执行到break语句时就终止循环了。

最佳答案

查看完整内容

break 就是终止当前循环的,比如 for ,while。if语句本身是判断语句,整个if语句块都属于循环体中,所以即使break在if语句中,执行到break语句时就终止循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 16:48:05 | 显示全部楼层    本楼为最佳答案   
break 就是终止当前循环的,比如 for ,while。if语句本身是判断语句,整个if语句块都属于循环体中,所以即使break在if语句中,执行到break语句时就终止循环了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:06:38 | 显示全部楼层
if 不是循环,break 跳的是 for 和 while
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:13:22 | 显示全部楼层
if 是条件判断,是流程控制语句.
while 和 for  才是循环语句.
break退出的是本层的while或for循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:17:57 | 显示全部楼层
if 是条件分支语句  break跳出的是循环 而且break是终止循环 不是跳出一层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:18:19 | 显示全部楼层
确实理解错了哈

if不叫循环,if是条件语句,用来做判断的,你的代码里面只有一个while循环语句。

另外,break是终止循环,continue是结束本次循环。

你代码的逻辑是这样的:
1、一共有3次输入机会。如果输入密码对了的话,就break,中止整个循环,也就是说这个循环不会执行了。
2、如果密码没有输入正确,而且密码中包含了*,就continue结束这一次循环,剩余次数不变,进入下一次循环,也就是再次让输入密码。
3、如果密码是错的,并且不包含*号,那么次数就减少一次,再次进行循环。

如果你理解清楚了的话,你看下我下面的代码的问题在哪里,如果能看出来,理解的应该没啥问题了。
  1. count = 3
  2. password = 'FishC.com'

  3. while count:
  4.     passwd = input('请输入密码:')
  5.     if passwd == password:
  6.         print('密码正确,进入程序......')
  7.         break
  8.     elif '*' in passwd:
  9.         print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')
  10.         continue
  11.     else:
  12.         print('密码输入错误!您还有', count - 1, '次机会!', end=' ')
  13.         continue
  14.     count -= 1
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:33:29 | 显示全部楼层
自我理解,if elif else 属于并列关系,密码输入正确,终止循环,并没有提及终止一层循环啊,continue 是指终止本轮循环并开始下一轮循环。
还有你代码中 count -= 1 有意义吗,感觉需要 while count != 0:  下面 count = count -= 1,
只是自我理解,只是自我理解,只是自我理解,我也是新手,你看看你就好。
其他的还是等大佬来吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:37:00 | 显示全部楼层
if 不是循环,他只是一个条件判断语句。break 跳出的是整个 while 循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:42:17 | 显示全部楼层
break是用来跳出循环的,这段程序break直接就跳出了while循环了
if else是条件判断语句不是循环哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:44:35 | 显示全部楼层
ztt一方 发表于 2019-8-13 17:33
自我理解,if elif else 属于并列关系,密码输入正确,终止循环,并没有提及终止一层循环啊,continue 是指 ...

while count 就等于 while count != 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-13 17:54:38 | 显示全部楼层
密码输入正确后 为什么还要让它再跳出 请输入密码  不理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-14 15:20:31 | 显示全部楼层
xzffbs 发表于 2019-8-13 17:54
密码输入正确后 为什么还要让它再跳出 请输入密码  不理解

并没有想他跳出来,我只是在推导程序的运行步骤是怎么走的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表