NJB 发表于 2025-1-28 18:36:05

输入值范围

在Python中如何限制输入数范围,尽量不只是用分支循环
例如输入a(0<a<50000)

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

某一个“天” 发表于 2025-1-28 19:14:31

不可能的

tommyyu 发表于 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))

小甲鱼的二师兄 发表于 2025-1-29 04:34:21

tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

有点牛哇!

某一个“天” 发表于 2025-1-29 09:45:59

tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

人才

NJB 发表于 2025-1-29 13:11:50

tommyyu 发表于 2025-1-29 00:13
用短路逻辑捣鼓出来的小玩意,你试试用递归看看能不能实现二次输入。

啊这
我发不了图片,但是我输入50001程序没有报错……

tommyyu 发表于 2025-1-30 14:42:59

本帖最后由 tommyyu 于 2025-1-30 15:22 编辑

NJB 发表于 2025-1-29 13:11
啊这
我发不了图片,但是我输入50001程序没有报错……

你自己调一下范围,我用的是0~500000

tommyyu 发表于 2025-1-30 15:29:31

新想法:用字典代替判断
这个实现比较简单,所以可以试试一行流{:10_256:}(lambda x, y:x](y))({True:(lambda x: print(x)), False:lambda x: print(x)},(lambda x:(x, '请重新输入!', 0<x<50000))(int(input())))

三体人的智子 发表于 2025-1-30 16:38:58

本帖最后由 三体人的智子 于 2025-1-30 16:40 编辑

打包成函数{:10_256:}
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)

tommyyu 发表于 2025-1-30 22:02:11

本帖最后由 tommyyu 于 2025-1-31 08:13 编辑

三体人的智子 发表于 2025-1-30 16:38
打包成函数

不是哥们这不是if-else?{:10_269:}
页: [1]
查看完整版本: 输入值范围