鱼C论坛

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

[已解决]输入值范围

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

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

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

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

打包成函数
  1. def g(prompt, min_, max_):
  2.     while True:
  3.         try:
  4.             num = int(input(prompt))
  5.             if min_ <= num <= max_:
  6.                 return num
  7.             else:
  8.                 print(f"错误:数值必须在{min_}到{max_}之间。")
  9.         except ValueError:
  10.             print("错误")
  11. a= g("请输入0到50000的整数",0,50000)
  12. print(a)
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-1-28 18:36:28 | 显示全部楼层
要在 Python 中限制输入值的范围,可以避免直接使用大量的分支和循环,而是通过一些简单、优雅的方式实现。例如,可以利用判断表达式和异常处理来简化逻辑。以下是解决该问题的一个示例代码:


  1. while True:
  2.     try:
  3.         # 获取用户输入并转换为整数
  4.         a = int(input("请输入一个0到10之间的数:"))
  5.         
  6.         # 使用简单的条件表达式检查范围
  7.         if 0 <= a <= 10:
  8.             print(f"输入合法,您输入的是:{a}")
  9.             break
  10.         else:
  11.             print("输入超出范围,请重新输入!")
  12.     except ValueError:
  13.         print("输入无效,请输入一个整数!")
复制代码


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


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

点评

看#4(投机取巧)  发表于 2025-1-29 00:14
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  6. x = a(); print(x*b(x))
复制代码

点评

闲的没事可以试试一行流 XD  发表于 2025-1-29 00:15
这段代码挺难理解的,自己先试试a和b函数的运行效果  发表于 2025-1-29 00:14
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

有点牛哇!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

人才
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

啊这
我发不了图片,但是我输入50001程序没有报错……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


你自己调一下范围,我用的是0~500000
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-1-30 15:29:31 | 显示全部楼层
新想法:用字典代替判断
这个实现比较简单,所以可以试试一行流
  1. (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())))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

打包成函数
  1. def g(prompt, min_, max_):
  2.     while True:
  3.         try:
  4.             num = int(input(prompt))
  5.             if min_ <= num <= max_:
  6.                 return num
  7.             else:
  8.                 print(f"错误:数值必须在{min_}到{max_}之间。")
  9.         except ValueError:
  10.             print("错误")
  11. a= g("请输入0到50000的整数",0,50000)
  12. print(a)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


不是哥们这不是if-else?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 01:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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