【问题标题】:How to input n numbers in list one by one? [closed]如何在列表中一个一个地输入n个数字? [关闭]
【发布时间】:2010-08-22 18:29:07
【问题描述】:

我希望我的程序询问 n 的值。用户输入数值后, 程序接受 n 个值的输入并将它们存储在列表或类似数组的东西中(在 C 中)。 输入必须采用以下格式:

Enter value of n: 4
2
5
7
1

我想将此输入存储在列表中以供以后使用。

【问题讨论】:

    标签: python list input


    【解决方案1】:

    最简单的方法是这样的:

    n = int(input())
    l = [int(input()) for _ in range(n)]
    

    但是这有很多问题:

    • 它会在输入无效时崩溃。
    • 它评估危险的输入 - 用户可以修改您的程序状态。 (Python 2.x)
    • 用户可以输入浮点数,程序不会报错,它只会默默地截断。 (Python 2.x)

    相反,您可以使用 raw_input 并将结果解析为整数。您还需要在适当的位置进行错误处理。如何处理错误取决于程序。

    您可能会发现此功能作为起点可能很有用:

    def getNumber(prompt = ''):
        while True:
            try:
                return int(raw_input(prompt))
            except:
                print "Invalid input, try again."
    

    请注意,input 和 raw_input 的行为在 Python 2.x 和 Python 3.x 之间发生了变化。 Python 3.x 的输入函数的行为类似于 Python 2.x 的 raw_input 函数。

    【讨论】:

      【解决方案2】:

      您提出的界面设计得相当糟糕。为什么不简单地让用户输入数字呢?如果确实需要计数,请让计算机进行计数:

      line = raw_input("Numbers: ")
      numbers = [int(s) for s i line.split()]
      

      带有错误检查的代码会更复杂,但基本方法是让用户更轻松。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-27
        • 1970-01-01
        • 2022-07-26
        • 2021-12-15
        • 2018-06-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多