鱼C论坛

 找回密码
 立即注册
查看: 133|回复: 4

[已解决]能不能来个大佬细讲一下break,感觉ai说了像没说

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如break的位置,我就一直很懵!例如:
while True:
                    if register[names]==hashed_password:
                        print('恭喜,登录成功~')
                        break
                    print('密码错误!')
                    numbers=input('请重新输入密码:')
                    result=hashlib.md5(numbers.encode('utf-8'))
                    hashed_password=result.hexdigest()
                break#这里的break位置咋会能跑到外面去,还是都可以的?
还有一个是break能够结束的循环也很懵,比如最后一个break结束了,那按理是应该整个while结束了?还是啥?那咋又跑到if去嘞?
最佳答案
break 就是跳出循环语句,执行了 break,就会跳出循环体。

下次提交代码请注意格式和缩进

本帖被以下淘专辑推荐:

  • · useful|主题: 7, 订阅: 0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
关于break的详细解答


  1. while True:
  2.     if register == hashed_password:
  3.         print('恭喜,登录成功~')
  4.         break  # 第一个break(在if内部)
  5.     print('密码错误!')
  6.     numbers = input('请重新输入密码:')
  7.     result = hashedlib.md5(...)
  8.     hashed_password = result.hexdigest()
  9. break  # 第二个break(在while外部)→ 这里有问题!
复制代码


问题核心:
1. break只能存在于循环内部(for/while)
2. break会立即终止当前所在的最近一层循环
3. 位置不同,逻辑完全改变!

你的代码分析:

第一个break:
位于if内部,当密码正确时:
→ 终止整个while循环 → 直接跳转到循环外的代码

第二个break:
如果缩进与while对齐(如示例中位置):
→ 语法错误!因为break不能在循环外使用
如果缩进在while内部(比如与print对齐):
→ 每次循环都会强制退出,导致逻辑错误(只能输入一次密码)

正确写法示例:

  1. while True:
  2.     user_input = input("请输入密码:")
  3.     hashed = hash_password(user_input)  # 假设有哈希函数
  4.    
  5.     if hashed == stored_hash:
  6.         print("登录成功!")
  7.         break  # 正确:终止整个while循环
  8.     else:
  9.         print("密码错误,请重试")
复制代码


关键总结:
  • break必须写在循环内部(和if同级或更深缩进)
  • 一个break只能结束一个循环(嵌套循环时只结束当前层)
  • 示例中第二个break如果是真实代码会报错,应该删除


举个栗子:

  1. while True:      # 外层循环
  2.     while True:  # 内层循环
  3.         break    # 只会结束内层循环!
  4.     break        # 结束外层循环
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层    本楼为最佳答案   
break 就是跳出循环语句,执行了 break,就会跳出循环体。

下次提交代码请注意格式和缩进
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
小甲鱼的二师兄 发表于 2025-5-13 22:52
break 就是跳出循环语句,执行了 break,就会跳出循环体。

下次提交代码请注意格式和缩进。

大佬,你真的是比ai还水,但我已经知道了,然后格式和缩进我会注意的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
爱吃菠萝包 发表于 2025-5-15 19:27
大佬,你真的是比ai还水,但我已经知道了,然后格式和缩进我会注意的

因为 break 就是跳出循环,没啥其他功能了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 20:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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