鱼C论坛

 找回密码
 立即注册
查看: 2233|回复: 5

[已解决]easygui模块问题求助

[复制链接]
发表于 2020-11-8 17:25:20 | 显示全部楼层 |阅读模式

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

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

x
import easygui as g
import random
secret = random.randint(1,10)
g.msgbox("------------------我爱你...个鬼------------------")
msg = "不妨猜一下我现在心里想的是哪个数字:"
temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)
while 1:
    if temp == None:
        temp = g.integerbox("请输入数字",lowerbound = 1,upperbound = 10)
    else:
        break
while temp != secret:
    msg ="哎呀,猜错了,请重新输入吧:"
    temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)

    if temp == secret:
        g.msgbox("我草,你是我心里的蛔虫吗?")
        g.msgbox("哼,猜中了也没有奖励!")
    else:
        while 1:
            if temp == None:
                temp = g.integerbox("请输入数字", lowerbound=1, upperbound=10)
            else:
                break
        if temp > secret:
            g.msgbox("哥,大了大了~~~")
        else:
            g.msgbox("嘿,小了小了~~~")
g.msgbox("不玩了")
我对小甲鱼的代码进行了修改,本意是如果用户没有输入数字,则提醒他输入,但是却导致不运行到底就无法结束,求大神修改,可以直接点击X关闭程序
最佳答案
2020-11-8 19:20:42
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入

重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可以自己重新写出这个功能

参考代码:
import easygui as g
import random

secret = random.randint(1,10)
g.msgbox("------------------我爱你...个鬼------------------")
msg = "不妨猜一下我现在心里想的是哪个数字:"
temp = g.enterbox(msg)
while temp.strip() == '':
    msg = '注意!您还没输入数字~'
    g.msgbox(msg)
    temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")

while temp != str(secret):
    msg ="哎呀,猜错了,请重新输入吧:"
    temp = g.enterbox(msg)
    while temp.strip() == '':
        msg = '注意!您还没输入数字~'
        g.msgbox(msg)
        temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")
    if temp == None:
        break
    if temp == str(secret):
        g.msgbox("我草,你是我心里的蛔虫吗?")
        g.msgbox("哼,猜中了也没有奖励!")
        break
    elif temp > str(secret):
        g.msgbox("哥,大了大了~~~")
    else:
        g.msgbox("嘿,小了小了~~~")

g.msgbox("不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 18:15:39 | 显示全部楼层

easygui 的 integerbox 组件是你点 X 的时候返回的是 None,点 OK 时候会判断你输入框内的值是否在上下限内

若不在,则组件自动会叫你重新输入此时不会返回值,所以不需要你进行循环重新判断

参考代码:
import easygui as g
import random

secret = random.randint(1,10)
g.msgbox("------------------我爱你...个鬼------------------")
msg = "不妨猜一下我现在心里想的是哪个数字:"
temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)

while temp != secret:
    msg ="哎呀,猜错了,请重新输入吧:"
    temp = g.integerbox(msg,lowerbound = 1,upperbound = 10)
    if temp == None:
        break
    if temp == secret:
        g.msgbox("我草,你是我心里的蛔虫吗?")
        g.msgbox("哼,猜中了也没有奖励!")
        break
    elif temp > secret:
        g.msgbox("哥,大了大了~~~")
    else:
        g.msgbox("嘿,小了小了~~~")
        
g.msgbox("不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-8 19:00:08 | 显示全部楼层
Twilight6 发表于 2020-11-8 18:15
easygui 的 integerbox 组件是你点 X 的时候返回的是 None,点 OK 时候会判断你输入框内的值是否在上下限 ...

这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 19:05:17 | 显示全部楼层
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入



这只是删了几个你原先代码的几个错误点,并不是直接拷贝甲鱼哥代码的

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

使用道具 举报

发表于 2020-11-8 19:20:42 | 显示全部楼层    本楼为最佳答案   
灵魂溢出 发表于 2020-11-8 19:00
这个不是小甲鱼原来的代码吗
我要的是那种能够在没有输入的时候提醒用户重新输入

重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可以自己重新写出这个功能

参考代码:
import easygui as g
import random

secret = random.randint(1,10)
g.msgbox("------------------我爱你...个鬼------------------")
msg = "不妨猜一下我现在心里想的是哪个数字:"
temp = g.enterbox(msg)
while temp.strip() == '':
    msg = '注意!您还没输入数字~'
    g.msgbox(msg)
    temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")

while temp != str(secret):
    msg ="哎呀,猜错了,请重新输入吧:"
    temp = g.enterbox(msg)
    while temp.strip() == '':
        msg = '注意!您还没输入数字~'
        g.msgbox(msg)
        temp = g.enterbox("不妨猜一下我现在心里想的是哪个数字:")
    if temp == None:
        break
    if temp == str(secret):
        g.msgbox("我草,你是我心里的蛔虫吗?")
        g.msgbox("哼,猜中了也没有奖励!")
        break
    elif temp > str(secret):
        g.msgbox("哥,大了大了~~~")
    else:
        g.msgbox("嘿,小了小了~~~")

g.msgbox("不玩了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-8 21:31:47 | 显示全部楼层
Twilight6 发表于 2020-11-8 19:20
重新看了下 easygui 的文档,把 integerbox 组件改成 enterbox 组件输入

但是不会自动检查范围,你可 ...

如果用strip()的方法的话,可以接着用integerbox组件,直接把循环判断是否输入为空改为temp.strip()就可以了,这就是我最初想要的效果了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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