鱼C论坛

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

[已解决]为什么无法跳出while循环

[复制链接]
发表于 2022-3-27 09:53:59 | 显示全部楼层 |阅读模式

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

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

x
这是我做的一个GUI猜数字源码:
import easygui as eg
import random
def judge():
    #times += 1
    if answer == number:
        eg.msgbox('恭喜你猜对啦!' ,'光电GUI猜数字',ok_button='游戏结束!')
        a = True
    elif answer > number:
        eg.msgbox('猜大啦!''光电GUI猜数字',ok_button='继续!')
    else:
        eg.msgbox('猜小啦!''光电GUI猜数字',ok_button='继续!')
eg.msgbox('游戏规则:猜一个1-100里的数字,猜对了,不会给你奖励!不过猜错了会提示你!','光电GUI猜数字',ok_button='现在开始!')
number = random.randint(1,100)
times = 0
a = False
while True:   
    try:
        answer = int(eg.enterbox('请输入0-100的一个数字','光电GUI猜数字'))
        judge()
        if a == True:
            break
    except (TypeError,ValueError):
        eg.msgbox('请不要输入字符!''光电GUI猜数字',ok_button='继续!')
    if a == True:
        break
它为什么一直问,无法跳出循环呢?
最佳答案
2022-3-28 14:36:22
本帖最后由 简单是福 于 2022-3-28 16:40 编辑

是你自定义的那块出了问题  具体的问题我也是初学者知识浅薄找不出来,
现在的代码已经稳定运行,加入了次数限制和密码





import easygui as eg
import random

#密码保护程序
M = str(123456) # 密码,
Y = 0 # while语句限制条件
tset = 0 # 密码输入次数
while   M != Y : # while循环开始
    Y = eg.enterbox('请输入密码')# 用户输入密码(整形后)
    if M != Y :#判断密码是否正确
          eg.msgbox ('密码错误请重新输入',ok_button='继续')
    tset += 1 #密码输入次数递增
    if tset == 3:#当用户输错三次密码时
        eg.msgbox('密码三次错误,程序退出')
        quit()#退出
if M == Y:#当用户输入密码正确时
        eg.msgbox('欢迎进入猜数字游戏 ')


eg.msgbox('游戏规则:猜一个1-100里的数字,猜对了,不会给你奖励!不过猜错了会提示你!你只有6次机会哦!','光电GUI猜数字',ok_button='现在开始!')
number = random.randint(1,100)
times = 0
a = False
while not a and times < 6:
    try:
        answer = int(eg.enterbox('请输入0-100的一个数字','光电GUI猜数字'))
    except (TypeError,ValueError):
        eg.msgbox('请不要输入字符!''光电GUI猜数字',ok_button='继续!')

    if answer == number:
        eg.msgbox('恭喜你猜对啦!' ,'光电GUI猜数字',ok_button='游戏结束!')
        a = True
    elif answer > number:
        eg.msgbox('猜大啦!''光电GUI猜数字',ok_button='继续!')
        times += 1
    else:
        eg.msgbox('猜小啦!''光电GUI猜数字',ok_button='继续!')
        times += 1
eg.msgbox(number,'这个数字是',ok_button='游戏结束!')

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

使用道具 举报

发表于 2022-3-27 10:43:37 | 显示全部楼层
while都是true
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-27 11:05:40 | 显示全部楼层
因为你将a设置为True了,所以你一直输入非零的数就不会跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-27 18:32:14 | 显示全部楼层
能发下解决代码吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-28 14:36:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 简单是福 于 2022-3-28 16:40 编辑

是你自定义的那块出了问题  具体的问题我也是初学者知识浅薄找不出来,
现在的代码已经稳定运行,加入了次数限制和密码





import easygui as eg
import random

#密码保护程序
M = str(123456) # 密码,
Y = 0 # while语句限制条件
tset = 0 # 密码输入次数
while   M != Y : # while循环开始
    Y = eg.enterbox('请输入密码')# 用户输入密码(整形后)
    if M != Y :#判断密码是否正确
          eg.msgbox ('密码错误请重新输入',ok_button='继续')
    tset += 1 #密码输入次数递增
    if tset == 3:#当用户输错三次密码时
        eg.msgbox('密码三次错误,程序退出')
        quit()#退出
if M == Y:#当用户输入密码正确时
        eg.msgbox('欢迎进入猜数字游戏 ')


eg.msgbox('游戏规则:猜一个1-100里的数字,猜对了,不会给你奖励!不过猜错了会提示你!你只有6次机会哦!','光电GUI猜数字',ok_button='现在开始!')
number = random.randint(1,100)
times = 0
a = False
while not a and times < 6:
    try:
        answer = int(eg.enterbox('请输入0-100的一个数字','光电GUI猜数字'))
    except (TypeError,ValueError):
        eg.msgbox('请不要输入字符!''光电GUI猜数字',ok_button='继续!')

    if answer == number:
        eg.msgbox('恭喜你猜对啦!' ,'光电GUI猜数字',ok_button='游戏结束!')
        a = True
    elif answer > number:
        eg.msgbox('猜大啦!''光电GUI猜数字',ok_button='继续!')
        times += 1
    else:
        eg.msgbox('猜小啦!''光电GUI猜数字',ok_button='继续!')
        times += 1
eg.msgbox(number,'这个数字是',ok_button='游戏结束!')

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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