鱼C论坛

 找回密码
 立即注册
查看: 172|回复: 13

[已解决]输入值范围

[复制链接]
发表于 2025-1-28 18:36:05 | 显示全部楼层 |阅读模式

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

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

x
在Python中如何限制输入数范围,尽量不只是用分支循环
例如输入a(0<a<50000)
最佳答案
2025-1-30 16:38:58
本帖最后由 三体人的智子 于 2025-1-30 16:40 编辑

打包成函数
def g(prompt, min_, max_):
    while True:
        try:
            num = int(input(prompt))
            if min_ <= num <= max_:
                return num
            else:
                print(f"错误:数值必须在{min_}到{max_}之间。")
        except ValueError:
            print("错误")
a= g("请输入0到50000的整数",0,50000)
print(a)

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2025-1-28 18:36:28 | 显示全部楼层
要在 Python 中限制输入值的范围,可以避免直接使用大量的分支和循环,而是通过一些简单、优雅的方式实现。例如,可以利用判断表达式和异常处理来简化逻辑。以下是解决该问题的一个示例代码:
while True:
    try:
        # 获取用户输入并转换为整数
        a = int(input("请输入一个0到10之间的数:"))
        
        # 使用简单的条件表达式检查范围
        if 0 <= a <= 10:
            print(f"输入合法,您输入的是:{a}")
            break
        else:
            print("输入超出范围,请重新输入!")
    except ValueError:
        print("输入无效,请输入一个整数!")

解释:
  • 使用 try...except 捕获非整数输入,从而避免直接程序崩溃。
  • 通过 if 0 <= a <= 10 条件限制输入范围,表达式简洁且可读性好。
  • 使用 while True 保证用户输入直到符合要求为止,不需要创建额外的嵌套分支。


如果还有其他问题,欢迎随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-28 19:14:31 | 显示全部楼层
不可能的

点评

看#4(投机取巧)  发表于 2025-1-29 00:14
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-29 00:13:30 | 显示全部楼层
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。
def a():
    y = int(input())
    return not 0<y<500000 or y

def b(y):
    return not type(y) == type(True) or '目标不合法!'

x = a(); print(x*b(x))

点评

闲的没事可以试试一行流 XD  发表于 2025-1-29 00:15
这段代码挺难理解的,自己先试试a和b函数的运行效果  发表于 2025-1-29 00:14
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2025-1-29 04:34:21 | 显示全部楼层
tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

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

使用道具 举报

发表于 2025-1-29 09:45:59 | 显示全部楼层
tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

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

使用道具 举报

 楼主| 发表于 2025-1-29 13:11:50 | 显示全部楼层
tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

啊这
我发不了图片,但是我输入50001程序没有报错……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-30 14:42:59 | 显示全部楼层
本帖最后由 tommyyu 于 2025-1-30 15:22 编辑
NJB 发表于 2025-1-29 13:11
啊这
我发不了图片,但是我输入50001程序没有报错……


你自己调一下范围,我用的是0~500000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-30 15:29:31 | 显示全部楼层
新想法:用字典代替判断
这个实现比较简单,所以可以试试一行流
(lambda x, y:x[y[2]](y))({True:(lambda x: print(x[1])), False:lambda x: print(x[0])},(lambda x:(x, '请重新输入!', 0<x<50000))(int(input())))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-30 16:38:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 三体人的智子 于 2025-1-30 16:40 编辑

打包成函数
def g(prompt, min_, max_):
    while True:
        try:
            num = int(input(prompt))
            if min_ <= num <= max_:
                return num
            else:
                print(f"错误:数值必须在{min_}到{max_}之间。")
        except ValueError:
            print("错误")
a= g("请输入0到50000的整数",0,50000)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-30 22:02:11 | 显示全部楼层
本帖最后由 tommyyu 于 2025-1-31 08:13 编辑


不是哥们这不是if-else?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-24 02:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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