Меню
Видеоучебник
Видеоучебник  /  Информатика  /  Основы алгоритмизации и программирования на языке Python  /  Ввод и вывод данных в программах на языке Python

Ввод и вывод данных в программах на языке Python

Урок 3. Основы алгоритмизации и программирования на языке Python

Цель любой компьютерной программы – это обработка данных. Для этого программа должна принимать данные на вход и возвращать результат их обработки пользователю. В этом видеоуроке рассматриваются функции ввода и вывода данных в программах на языке Python, а также различные варианты их использования. Ученики узнают о пользовательском интерфейсе программы и принципе его дружественности.
Плеер: YouTube Вконтакте

Конспект урока "Ввод и вывод данных в программах на языке Python"

Вопросы:

·     Инструкции считывания данных с клавиатуры, их вывода на экран.

·     Использование инструкций ввода/вывода в программах.

Итак, давайте подумаем, для чего же нам нужны компьютерные программы. Они нужны нам для того, чтобы быстро обрабатывать и анализировать некоторые данные, особенно в тех случаях, когда у человека на это может уйти много времени. Предположим, что у нас есть программа, способная обработать некоторые данные. Прежде чем обработать данные, программа должна их каким-то образом получить. Так, например, пользователь может задать данные путём ввода с клавиатуры. После того, как программа обработала данные, она должна определённым способом вернуть результат их обработки пользователю, например, вывести его на экран в текстовой форме. Именно для того, чтобы организовать передачу данных от пользователя программе и наоборот, используются инструкции ввода и вывода.

Начнём с ввода данных. Для того, чтобы дать возможность пользователю ввести данные, используется функция input без параметров. Эта функция возвращает значение, которое пользователь ввёл с клавиатуры в строку. Рассмотрим её запись. Все функции в языке Python записываются в составе инструкций. Для вызова функции записывается её имя, после которого в скобках следуют её параметры. Так как функция input не имеет параметров, после её имени должны следовать пустые скобки. Так как программа записывает данные в переменную, то результат работы этой функции присваивается некоторой переменной. Таким образом, для считывания значения переменной a с клавиатуры нужно записать инструкцию присваивания переменной a значения функции input ().

Для вывода данных из оперативной памяти компьютера на экран монитора используется инструкция print. Мы уже пользовались ей раньше. Вспомним, как она записывается. После служебного слова print в скобках следует список выводимых данных. Как и в любой другой операции, в инструкции вывода могут указываться литералы, переменные и выражения.

Итак, мы узнали инструкции, используемые для ввода и вывода данных, теперь давайте попробуем их использовать в программе. Напишем модуль, который принимает на ввод 2 целых числа и выводит на экран их сумму. Начнём написание модуля. Числа мы будем хранить в переменных a и b. Поэтому в начале модуля запишем инструкцию присваивания переменной a значения функции input (). Дальше мы запишем такую же инструкцию для переменной b. После этого мы вычислим значение суммы этих переменных и выведем его на экран с помощью функции print. Для этого, после служебного слова print, в скобках запишем выражение: a + b.

a = input ()

b = input ()

print (a + b)

Сохраним модуль и запустим его на выполнение. Первое число зададим равным 35. После ввода числа необходимо нажать клавишу «Enter». Второе число зададим равным 42. Очевидно, что по нашему замыслу программа должна была вывести на экран число 77, но вместо этого она вывела 3542. Хотя на самом деле это не названное число, а символьная строка, состоящая из четырёх цифр.

Почему так произошло? Здесь нужно понимать, что пользователь, задавая данные с клавиатуры, вводит их в текстовой форме. То есть функция input возвращает данные типа str, а нам, по условию задачи, нужны целые числа, то есть данные типа int. Для того, чтобы эти данные получить, нам необходимо воспользоваться функцией преобразования типов. Она записывается по названию типа выходных данных. В нашем случае – это целые числа, то есть int. В качестве параметра функции задаются данные, которые необходимо преобразовать. Таким образом, чтобы с клавиатуры считать целочисленное значение в переменную a, нужно присвоить ей значение функции int от значения функции input ().

Изменим записанный нами модуль. В инструкциях присваивания возьмём выражения, следующие после знака равенства, в скобки, после чего перед скобками запишем слово int.

a = int (input ())

b = int (input ())

print (a + b)

После этого сохраним модуль и запустим его на выполнение. Введём те же числа, которые мы вводили до этого: 35 и 42. В этот раз на экран выведено предполагаемое значение – 77. Программа работает правильно.

Но, предположим, нашей программой решил воспользоваться другой пользователь. Ему будет совершенно непонятно, что необходимо ввести, но даже если пользователь подберёт значения, при вводе которых программа не завершит своё выполнение выводом ошибки, то ему также будет непонятно, что программа должна вывести на экран. Поэтому ввод и вывод данных в программе должны сопровождаться различными поясняющими сообщениями и подсказками, чтобы пользователю было понятно, что ему нужно сделать и какие данные он получит в результате. Этот принцип называется дружественностью пользовательского интерфейса.

Изменим модуль, который мы написали, добавив в него вывод поясняющих сообщений и подсказок. В самом начале модуля добавим инструкцию print, выводящую сообщение о том, что это программа, вычисляющая сумму двух целых чисел, а также запрос на ввод этих чисел. Изменим последнюю инструкцию вывода так, чтобы было выведено математическое действие, результатом которого является выводимое число. Перед суммой, через запятую, запишем переменную a, символьную строку, состоящую из знака плюс, переменную a, а также символьную строку, состоящую из знака равенства.

print ('Программа, вычисляющая сумму двух целых чисел. Введите два числа.')

a = int (input ())

b = int (input ())

print (a, '+', b, '=', a + b)

Сохраним модуль и запустим его на выполнение. Теперь перед вводом данных программа отображает на экране сообщение о том, для чего она предназначена и что должен ввести пользователь. Введём числа 3 и 2. Программа вывела сообщение о том, что 3 + 2 = 5. Теперь наша программа понятна для пользователя.

Обратим внимание, что в последнем сообщении числа и математические знаки разделены пробелами, которые мы не выставляли. Так получилось потому, что при использовании инструкции print, между перечисленными значениями выставляются разделители, по умолчанию это пробелы, но разделители можно изменить, присвоив прямо в инструкции print переменной sep новые символы-разделители.

Изменим наш модуль, добавив в конце инструкции print присваивание переменной sep пустой строки, записанной двумя кавычками, между которыми ничего нет.

print ('Программа, вычисляющая сумму двух целых чисел. Введите два числа.')

a = int (input ())

b = int (input ())

print (a, '+', b, '=', a + b, sep = '')

Снова сохраним наш модуль и запустим его на выполнение. Введём числа 3 и 2. На этот раз результирующее выражение было выведено без пробелов.

При обработке вывода данных часто бывает полезным использование форматированного вывода. В этом случае можно выделить некоторое количество знаковых позиций для вывода каждого значения. Для этого используется функция «Формат», которая формирует символьную строку заданного формата. Рассмотрим, как она работает. Для этого в интерактивном режиме среды разработки присвоим переменным a, b и c соответственно значения 15, 141 и 3. Дальше запишем инструкцию print, в которой, в кавычках, сначала запишем строку, описывающую формат вывода. Формат вывода каждого отдельного значения указывается в отдельных фигурных скобках. Он начинается с двоеточия. Дальше для целых чисел следует единственное число – количество выделяемых знаковых позиций и английская буква Ди. Выделим по пять знаковых позиций для вывода каждого числа. После строки формата ставится точка и записывается служебное слово format, после которого в скобках указываются выводимые значения. Мы укажем значения переменных a, b и c. Программа вывела отступы перед значениями, так как незанятые знаковые позиции заполняются пробелами. Если же знаковых позиций не хватает, они дополняются автоматически.

>> a = 15

>> b = 141

>> c = 3

>> print ('{:5d}{:5d }{:5d }'.format (a, b, c))

   15  141    3

Теперь изменим написанный нами модуль так, чтобы он рассчитывал частное двух чисел, причём необязательно целых. Сначала изменим первое поясняющее сообщение. Это будет программа, вычисляющая значение частного двух чисел. После этого изменим функции преобразования типа для инструкций ввода. Так как числа необязательно будут целыми, то вводимые значения нужно преобразовать в вещественный тип float. Запишем слово float  вместо int. А также изменим последнюю инструкцию вывода. Заменим выводимый знак «+» знаком «/», а в выводимом выражении сложение заменим делением.

print ('Программа, вычисляющая частное двух чисел. Введите два числа.')

a = int (input ())

b = int (input ())

print (a, '/', b, '=', a / b, sep = '')

Запустим программу на выполнение. Так как вводимые числа вещественные, у них может быть дробная часть, которая при вводе отделяется от целой части точкой. Введём первое число, равное 0.01, а второе — 5000. В результате программа вывела вместо последнего числа сообщение: 2e-06. Это называется экспоненциальной формой представления числа. Она означает, что результат равен произведению 2 и 10-6.

Для вывода вещественных значений также можно использовать форматированный вывод. Применим форматированный вывод для последнего числа. В качестве строки формата, в кавычках, между фигурными скобками укажем двоеточие, после которого будет следовать два целых числа, разделённые точкой – общее количество выделяемых знаковых позиций и количество выводимых знаков после запятой. Укажем 10 знаковых позиций и 7 знаков после запятой. Дальше для вещественных чисел следует английская буква f. После кавычек поставим точку и напишем служебное слово format, после которого в скобках укажем выводимое значение.

print ('Программа, вычисляющая частное двух чисел. Введите два числа.')

a = int (input ())

b = int (input ())

print (a, '/', b, '=', '{:10.7f}'.format (a / b))

Запустим наш модуль на выполнение. Снова зададим числа 0.01 и 5000. На этот раз программа вывела ответ не в экспоненциальной, а в обычной форме.

Мы узнали:

·     Для считывания данных с клавиатуры предназначена функция input, которая возвращает символьную строку – то, что пользователь ввёл с клавиатуры, прежде чем нажал клавишу «Enter».

·     Если введённые данные необходимо преобразовать в числа, то используются функции преобразования типов: int и float.

·     Инструкция print используется для вывода данных на экран. При этом данные будут выведены через разделители, по умолчанию это пробелы.

·     При выводе данных также часто бывает полезна функция format, формирующая символьную строку заданного формата.

0
12851

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт