鱼C论坛

 找回密码
 立即注册
查看: 1318|回复: 2

[已解决]求助break的跳出逻辑

[复制链接]
发表于 2020-3-7 12:25:01 | 显示全部楼层 |阅读模式

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

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

x
如下代码中,第15行的break语句触发后继续执行了16行的mgsbox语句,并且开始了新一轮的while循环
import easygui as g
import random
result = random.randint(0, 10)
g.msgbox('猜一猜我现在想的数字', '数字小游戏','猜')
guess = g.enterbox('猜一猜我现在想的数字', '数字小游戏','输入一个整数')
while 1:
    try:
        guess = int(guess)

        if guess > result:
            guess = int(g.enterbox('大了,重新猜一个', '数字小游戏','输入一个整数'))
        elif guess < result:
            guess = int(g.enterbox('小了,重新猜一个', '数字小游戏','输入一个整数'))
        elif guess == result:
            break
        g.msgbox('猜对了!')

    except ValueError:
        guess = g.enterbox('输入错误', '数字小游戏', '输入一个整数')
    except TypeError:
        break
g.msgbox('游戏结束。')

将代码15、16行改写为:
import easygui as g
import random
result = random.randint(0, 10)
g.msgbox('猜一猜我现在想的数字', '数字小游戏','猜')
guess = g.enterbox('猜一猜我现在想的数字', '数字小游戏','输入一个整数')
while 1:
    try:
        guess = int(guess)

        if guess > result:
            guess = int(g.enterbox('大了,重新猜一个', '数字小游戏','输入一个整数'))
        elif guess < result:
            guess = int(g.enterbox('小了,重新猜一个', '数字小游戏','输入一个整数'))
        elif guess == result:
            break
            g.msgbox('猜对了!')
    except ValueError:
        guess = g.enterbox('输入错误', '数字小游戏', '输入一个整数')
    except TypeError:
        break
g.msgbox('游戏结束。')

则不会触发“猜对了”对话框,并且break语句可以正常跳出至“游戏结束”对话框。
请问在第一段代码中,break为什么没有跳出while循环呢?
最佳答案
2020-3-7 12:39:45
你得continue一下,要不然一直在里边判断,就不会跳出循环了
import easygui as g
import random
result = random.randint(0, 10)
g.msgbox('猜一猜我现在想的数字', '数字小游戏','猜')
guess = g.enterbox('猜一猜我现在想的数字', '数字小游戏','输入一个整数')
while 1:
    try:
        guess = int(guess)

        if guess > result:
            guess = int(g.enterbox('大了,重新猜一个', '数字小游戏','输入一个整数'))
            continue
        elif guess < result:
            guess = int(g.enterbox('小了,重新猜一个', '数字小游戏','输入一个整数'))
            continue
        elif guess == result:
            break
        g.msgbox('猜对了!')
        

    except ValueError:
        guess = g.enterbox('输入错误', '数字小游戏', '输入一个整数')
    except TypeError:
        break
g.msgbox('游戏结束。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-7 12:39:45 | 显示全部楼层    本楼为最佳答案   
你得continue一下,要不然一直在里边判断,就不会跳出循环了
import easygui as g
import random
result = random.randint(0, 10)
g.msgbox('猜一猜我现在想的数字', '数字小游戏','猜')
guess = g.enterbox('猜一猜我现在想的数字', '数字小游戏','输入一个整数')
while 1:
    try:
        guess = int(guess)

        if guess > result:
            guess = int(g.enterbox('大了,重新猜一个', '数字小游戏','输入一个整数'))
            continue
        elif guess < result:
            guess = int(g.enterbox('小了,重新猜一个', '数字小游戏','输入一个整数'))
            continue
        elif guess == result:
            break
        g.msgbox('猜对了!')
        

    except ValueError:
        guess = g.enterbox('输入错误', '数字小游戏', '输入一个整数')
    except TypeError:
        break
g.msgbox('游戏结束。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-7 14:09:11 | 显示全部楼层
qiuyouzhi 发表于 2020-3-7 12:39
你得continue一下,要不然一直在里边判断,就不会跳出循环了

有道理.....

原来是缩进问题,跳出猜对了我以为真就猜对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-23 11:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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