python - 在 Python 3.x 的整数列表中限制用户输入

标签 python arrays python-3.x list sorting

我是 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/

相关文章:

php - $variable[] 和 array_push($variable, $newValue) 哪个更快?

Java - 在特定索引处添加元素并将其他元素下推

python - def form_valid 用于 Django Rest 框架

python - 二维 numpy 数组 - 检查所有相邻项是否相等

python - 如何使用正则表达式搜索出现次数一定的字符串?

c# - 将字符串拆分为一组分组数组

python - 终端在 VS Code 中仅显示一个空的不可编辑光标

python - 再次 urllib.error.HTTPError : HTTP Error 400: Bad Request

python - NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

python - 使用 Selenium 登录雅虎,缺少点击