我是 Python 的新手,在我的一个练习中,我需要编写一个程序,将输入到控制台的 5 个整数存储在一个列表中,然后打印它的长度、列表类型,并打印排序后的列表。
到目前为止,在不将输入限制为 5 个整数的情况下,我能做到的最优雅的方法是:
a = [int(x) for x in input().split()]
print(len(a), type(a), sorted(a))
但是,我无法理解如何添加命令以仅存储用户在列表中输入的 5 个数字并忽略其余数字。
我想过使用 int(input()) for x in range(5),但是没有用,而且我也不知道当时如何添加拆分。
我知道有一种方法可以使用 map() 将项目存储在列表中,但我在我的类(class)中还没有遇到过,所以如果有一种更简单、更有效的方法来使用 list(map ()), 如果有人能指导我,我将不胜感激。
我刚开始学习,所以任何建议将不胜感激。谢谢!
最佳答案
你有两个选择:
- 取一行中的前五个值,忽略其余值
- 检查长度并告诉用户不要输入太多值
后者会给用户更好的反馈,而前者可能会带来意外(我的行尾的数字怎么了?)
忽略其余部分很容易;切片您创建的列表; [:5]
创建一个只有(最多)5 个值的新列表:
a = [int(x) for x in input().split(maxsplit=5)[:5]]
上面还告诉 str.split()
最多只拆分 5 次,以避免进一步的工作。
根据命令行工具约定,错误消息应该写入 sys.stderr
并且您将以非零退出代码退出:
a = [int(x) for x in input().split()]
if len(a) > 5: # or len(a) != 5 if you must have exactly 5 values
print('No more than 5 values, please!', file=sys.stderr)
sys.exit(1)
当您使用一个库来处理命令行解析时,该库通常包含一个函数来处理错误通信和退出(例如 argparse
,您将在其中使用 parser. error(message)
发出问题信号并一步退出)。
关于python - 在 Python 3.x 的整数列表中限制用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777751/