Как ввести n номеров в списке один за другим?

1

Я хочу, чтобы моя программа запросила значение n. После того, как пользователь вводит значение, программа принимает входные данные для n значений и сохраняет их в списке или что-то вроде массива (в C). Ввод должен быть в формате:

Enter value of n: 4
2
5
7
1

Я хочу сохранить эти данные в списке для последующего использования.

Теги:
list
input

2 ответа

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."

Обратите внимание, что поведение ввода и raw_input изменилось между Python 2.x и Python 3.x. Входная функция Python 3.x ведет себя как функция Python 2.x raw_input.

1

Интерфейс, который вы предлагаете, довольно плохо разработан. Почему бы просто не позволить пользователю вводить цифры? Пусть компьютер выполняет подсчет, если граф действительно необходим:

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

Код будет более сложным с проверкой ошибок, но основным подходом является упрощение для пользователя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню