Источник данных - источник, при обращении к которому программа получает формализованную, то есть приведённую к определённому виду в соответствие с определёнными правилами, информацию.
Формализация в общем случае требует, что мы, прежде чем запрашивать данные, должны полностью понимать, каким образом и в каком виде поступает информация: текст ли это, числа, табличная форма с полями, HTML-код и прочее.
Важен и метод получения информации. Например, при чтении из файла мы можем воспользоваться одним из трёх способов получения данных: загрузить в память файл полностью, либо загружать по одной строке последовательно, либо - посимвольно. В зависимости от выбранного способа мы пишем алгоритм обработки этих данных.
Источниками данных могут являться:
Несмотря на многообразие источников, в данной части учебника мы будем использовать ввод данных только с клавиатуры; в последнем разделе, где напишем игру с использованием Tkinter, - данные будут вводиться с помощью "мыши".
ВВОД С КЛАВИАТУРЫ |
С клавиатуры мы можем получить два типа данных:
Программисту необходимо чётко осознавать, какой тип данных он запрашивает у пользователя. Исходя из типа данных пишется код для получения информации.
|
Ввод данных с клавиатуры осуществляет функция input().
input() |
Функция input() возвращает данные, набранные пользователем на клавиатуре. Данные передаются только тогда, когда нажата клавиша Enter. Процесс набора текста в момент запроса данных с помощью input() никак не контролируется. До нажатия Enter'a проверить набираемое человеком на, например, корректность, невозможно.
|
Фраза функция возвращает данные означает, что записав название функции (в нашем случае input()) мы можем быть твёрдо уверены в том, что получим результат её работы. Возвращение данных можно сравнить с разговором.
Вы спрашиваете у друга:
- У тебя когда днюха?
Он отвечает:
- Одинадцатого апреля!
Ваш вопрос - это функция. Ответ собеседника - результат работы функции, информация, которую вы сохраняете в памяти и по необходимости используете.
|
Оформление:
s = input("Введите данные: ")
Здесь s - переменная, в которую Python поместит результат работы функции: введённые символы, input() - функция.
В круглых скобках мы указываем строку-приглашение. Не пренебрегайте строкой-приглашением, каждая уважающая себя программа, запрашивая данные, помечает, что она имеет ввиду. Тем более не забывайте, что пользователь не видит вашего программного кода и не понимает, что программа от него требует.
|
Как же сработает программа?
s = input("Введите данные: ")
Введите данные: _
Выглядит сложно? Разрушить кажущуюся сложность легко: просто попробуйте, как это работает!
ВВОД СТРОКИ |
Поставим себе несложную задачу: спросить у пользователя имя и вывести его на экран. Решается предельно просто:
s = input("Введите ваше имя: ")
print(s)
Результат работы:
Введите ваше имя: Виктор
Виктор
print("s") |
Если переменная s не инициализирована, то есть ей не задано значение, то возникнет ошибка. Программа из одной строки:
print(s)
спровоцирует ошибку:
NameError: name 's' is not defined
Ошибка имени: идентификатор 's' не определён.
ВЫВОД НЕСКОЛЬКИХ АРГУМЕНТОВ |
Усложним предыдущую задачу: спросим у пользователя имя и выведем приветствие: "Привет, ИМЯ_ПОЛЬЗОВАТЕЛЯ! Как твои дела?".
Получать имя пользователя мы научились, определимся с выводом нескольких аргументов, то есть формированием выходной строки.
|
Каждый аргумент функции print() перечисляется через запятую. Как прилагательные в великом, могучем, родном, красивом, пушкинском русском языке.
Общий вид команды print() с несколькими аргументами.
print("Привет",
"Как",
"Твои",
"Дела?")
Результат работы:
Привет Как Твои Дела?
Отметьте для себя наличие запятых после каждой части фразы.
|
Наша программа:
userName = input("Введите ваше имя: ")
print("Привет,",
userName,
"! Как твои дела?")
Результат:
Введите ваше имя: Виктор
Привет, Виктор ! Как твои дела?
|
Но у нас есть ещё одна проблема. Дело в том, что запись восклицательного знака на расстоянии в пробел от имени (да и любого слова) не соответствует стандартам. То есть так нельзя: "Привет, Виктор !" Нужно так: "Привет, Виктор!" Восклицательный знак "прижат" к слову.
Происходит из-за того, что print() по умолчанию между перечисленными через запятую аргументами ставит пробел. Исправим программу, воспользовавшись конкатенацией, то есть сложением строк:
userName = input("Введите ваше имя: ")
print("Привет,",
userName + "!",
"Как твои дела?")
Результат:
Введите ваше имя: Виктор
Привет, Виктор! Как твои дела?
Бинго! Злосчастный пробел убран!
print("Привет,",
userName + "!",
"Как твои дела?") print("Привет,", userName + "!", "Как твои дела?") Можно сразу сформировать выводимую строку в отдельную переменную. Подумайте, как? |
Строка в отдельную переменную:
userName = input("Введите ваше имя: ")
outString = "Привет, " + userName + "! Как твои дела?"
print(outString)Посмотреть
ВВОД ЦЕЛЫХ ЧИСЕЛ |
Данные, получаемые с помощью input() всегда являются строковым значением str. Со строками мы не можем выполнять математические действия - вычитать, например, или делить. Даже если введём в строковые переменные числа:
a = input("Введите число: ")
b = input("Введите число: ")
summa = a + b
print("Сумма чисел:", summa)
Результат:
Введите число: 35
Введите число: 15
Сумма чисел: 3515
То есть сработало присоединение, конкатенация. "Что же делать?" - спросите вы. А я вам отвечу: "Преобразовать тип!"
Если нам нужно получить целое число, то пользуемся функцией int(), которая пытается преобразовать строку в целое число.
Почему "пытается"? Потому что если в строке будут находиться буквы или знаки препинания, то Python выдаст ошибку. То есть int("100") - сработает, а int("Привет!") загубит программу.
a = int(input("Введите число: ")) |
Перепишем программу:
a = int(input("Введите число: "))
b = int(input("Введите число: "))
summa = a + b
print("Сумма чисел:", summa)
Результат:
Введите число: 35
Введите число: 15
Сумма чисел: 50
Бинго! Теперь Python в соответствие с правилами математических выражений может работать с введёнными значениями, принимая их за числа.
Но если пользователь окажется коварен, хитёр и введёт дробное значение, то Python выдаст ошибку:
Введите число: 3.14
Traceback (most recent call last):
File "D:\Python\Ввод значений.py", line 1, in Пока избежать мы этого не можем. Поэтому при тестировании программы всегда следите за вводимыми данными. Проверку поставим потом.
Пишем программу, которая поможет бабушке определить площадь прямоугольника. Комнаты, например, или дачного участка.
Подумал. А вдруг бабушка, которая станет читать этот учебник, не знает значение слова "интерфейс"? Итак, специально для Вас, Бабушка:
Площадь для бабушки. Листинг программы (текст кода):
print("Здравствуй, дорогая бабушка!")
print("Написал специально для тебя программу,")
print("которая может посчитать площадь, например, комнаты.")
print("Просто введи нужные (целые!) числа и нажми Enter.")
a = int(input("Введи длину комнаты: "))
b = int(input("Введи ширину комнаты: "))
resultat = a * b
print("Площадь комнаты =", resultat) Результат:
Здравствуй, дорогая бабушка!
Написал специально для тебя программу,
которая может посчитать площадь, например, комнаты.
Просто введи нужные (целые!) числа и нажми Enter.
Введи длину комнаты: 4
Введи ширину комнаты: 3
Площадь комнаты = 12 Если вы видите и понимаете, о каких блоках идёт речь и где они находятся, - у вас впереди огромные перспективы! Если есть сложности, то, пожалуйста, вернитесь назад и перечитайте главу "Обработка данных".
© 2019-2024 Виктор Трофимов
ПРОГРАММА ДЛЯ БАБУШКИ
Например, интерфейс вашего смартфона состоит из всех расположенных на экране значков. Они должны быть удобны, понятны, доступны, красивы. При кажущейся простоте разработка интерфейса очень тяжёлый труд. Не забывайте, что все элементы управления должны быть понятны и... бабушке!
Крик восхищения
[ Оглавление ] [ В начало страницы ]