Узнайте о лучших образовательных организациях на премии Курсы.ру
31 июля 19:00
Подробнее
Меню
Каталог
Каталог
Все статьи
Программирование

Ввод данных в Python

Python — универсальный язык программирования для веб-приложений, игр, машинного обучения и многих других областей. Он популярен во всем мире. В этой статье мы расскажем, как вводить данные в Python и какие инструменты использовать. Разберемся как это работает на примере реального кода.

Владислав Громов Владислав Громов SEO-специалист
Ввод данных в Python

Ввод данных

Ввод это когда вы говорите программе сколько яблок берёт Петя, или скольки равен X, или же какой квадратик из трёх мы выберем.

В Python для этого существует одноименное слово, только на английском.

input() — команда для ввода.

Для ее запуска не нужно танцевать с бубном, что-то докачивать и устанавливать. Установленного питона и запущенной среды разработки будет достаточно.

phrase = input("Мой первый ввод будет здесь: ")

Получаем разные типы данных

Поскольку изначально, всё что бы мы не ввели будет являться строкой, то стоит знать, а как получить и другие типы данных.

Если вкратце: программа хочет себя обезопасить от фатальных ошибок.

Так как вы может быть скажете, что хотите ввести число, а пользователь введёт букву “Н” - и вот какая это цифра❓

Поэтому ввод лучше сделать строкой, так как там можно и цифры и строки. И тогда условный ввод “Dominator777” или “Семь Над цать” не поломает нам программу.

Число (int, float)

celoeChislo = int(input("Введи число: "))  # целое число (например 10, 0, -33)

Поскольку целое число как тип данных это int(сокр. Integer), то механизм здесь в том, что мы переводим полученный ввод в числовой тип данных.

neCeloeChislo = float(input("Введи число: "))  # дробное число (например 10.3, 0.0, -33.994)

Аналогичная история с дробными числами.

Мы в разговорном языке называем такие числа дробными, но вообще в математике они называются числа с плавающей точкой. Слово “плавающий” здесь и будет переводиться как floating → сокр. float

Список (list)

Предположим, что тебе надо ввести набор слов, но не в одну строку, а чтобы каждое слово было отдельным элементом.

В качестве решения можно воспользоваться методом строки .split().

naborSlov = input("Введи фразу: ").split()  # полученную фразу раскалываем по пробелу (.split() по умолчанию разделяет по пробелам)
# То есть при таком вводе: "Питон это круто и несложно",
# Мы получим это: ['Питон', 'это', 'круто', 'и', 'несложно']

naborSlov = input("Введи фразу: ").split(", ")  # полученную фразу раскалываем по запятым и убирает пробел после запятой
# То есть при таком вводе: "Кирилл, Данил, Антон",
# Мы получим это: ['Кирилл', ' Данил', ' Антон']

Булевый тип (bool)

Булевый тип имеет только одно из двух состояний:

  1. Правда (True)
  2. Ложь (False)

Сперва важно понять одну вещь при работе с булевым типом данных. Все что не пустота, то правда:

  • Преобразованная пустая строка (””) будет ложью
  • Остальное будет правдой, даже пробел (” “)
isEnter = input("Всё или ничего: ")
if isEnter:
    print("Пользователь что-то ввёл!")

Такой код выведет "Пользователь что-то ввёл!" только если было хоть что-то введено пользователем.

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

Ввод в несколько переменных

Что если мы хотим спросить несколько переменных сразу?

Например, чтобы не писать так:

x = input("x: ")
y = input("y: ")
z = input("z: ")

Можно написать так:

x, y, z = input("x: "), input("y: "), input("z: ")

Но можно пойти дальше, и разбить одно значение сразу на несколько:

word1, word2, word3 = input("Введи три слова: ").split()  # при вводе "Питон это круто"
print(f"w1={word1}, w2={word2}, w3={word3}")  # получим w1=Питон, w2=это, w3=круто

Убираем символы слева/справа строки

Представим что в ваш input() пользователь написал: “ Подкрадули “

И на выходе мы и получим такую строку, со всеми её пробелами.

Починить этот потенциальный баг нам поможет метод .strip() — убирает символы справа и слева строки.

clearedPhrase = input("Как тебя зовут, путник? > ").strip()
# Пользователь ввел: “  Подкрадули  “
# Мы получим: “Подкрадули“

Да, по умолчанию убираются пробелы справа и слева.

Также мы можем убирать несколько символов сразу. Как? Указать их поштучно в кавычках.

clearedPhrase = input("Как тебя зовут, путник? > ").strip("-+! ")  # p.s. не забываем перечислить и пробел!
# Пользователь ввел: “  -+Подкрадули?!      “
# Мы получим: “Подкрадули?“

Также мы можем убирать с правой части при помощи .rstrip(); и с левой при помощи .lstrip().

Круто это всё, но как это применить? Как супер удобный способ получить положительное число в случае необходимости.

positive = input("Ты мне число, а я тебе модуль: ")  # если ввели ----321
print(positive.lstrip("-"))  # то мы выведем 321

А также для процесса валидации, но об этом позже.

Валидация

Валидация, если простым языком, это проверка данных на корректность и действия направленные на то, чтобы данные были корректными.

Банальный пример: пока значение неверное, спрашивать у игрока новое значение.

Зачем это может нам потребоваться? Например мы хотим получить число.

x = int(input("Введи число: "))  # полученную строку переводим в число при помощи команды int()

Но как можно предположить, если пользователь напишет “Семь Егоров”, то мы не сможем перевести это в число. Столкнувшись с чем-то красным и фатальным. Ошибкой…

Но мы можем эту фатальную ошибку отловить и обработать при помощи try и except.

while True:  # бесконечный цикл. остановим тогда, когда получим корректное значени
    try:  # попытаемся выполнить следующие строки кода:
        x = int(input("Введи число: "))
        break  # выйдем из цикла, если в строке выше не стокнулись с ошибкой
    except ValueError:  # Исключение класса ValueError возникает как раз в таких ситуациях, когда неверное значение подаётся для действия 
        print("Пожалуйста, впиши число(из цифр).")  # Выполнится в том случае, если была фатальная ошибка с исключением ValueError</code>
Содержание
Информация была полезна?
13 оценок, среднее: 4.07 из 5