【问题标题】:Better way to get multi lines input from console on python 3?在 python 3 上从控制台获取多行输入的更好方法?
【发布时间】:2022-11-23 04:32:10
【问题描述】:

我想知道如何处理 python 3 上的多行输入。

当输入是

10
1
6
8
5
4
7
3
2
9
0

,代码是

    numbers=[]
    n = int(input()) # Get n numbers
    for i in range(n): # Add n numbers in list
        numbers.append(int(input()))

我无法通过复制和粘贴整个文本块来输入文本,因为 python 控制台给了我 ValueError。 我必须使用键盘上的 Enter 键逐行键入。

我的解决方案如下所示。

    sample_input=input().splitlines()
    n = int(sample_input[0]) # Get n numbers
    data=[]
    for i in range(1, n+1): # Add n numbers in list
        data.append(int(sample_input[i]))

但我认为这是乱码。 有什么更好的方法呢?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    一种解决方案:

    sample_input=input().splitlines()
    sample_input_as_int = [int(value) for value in sample_input]
    n, *data = sample_input_as_int
    
    if len(data) != n:
        raise ValueError("wrong number of data provided")
    

    您真的需要询问用户他们要输入多少个数字吗? 如果他们只输入数字,您可以简化代码:

    sample_input=input().splitlines()
    data = [int(value) for value in sample_input]
    

    【讨论】:

    • 第 3 行中的 *data 是什么意思?获取 sample_input_as_int 的所有值作为数据列表的值,除了第一个?
    • 是的(以元组的形式)。另一个解决方案:data = sample_input_as_int[1:]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多