Типы данных. Ввод-вывод.
В настоящее время существует две версии языка Python: более старая версия 2 и современная версия 3. Они не вполне совместимы друг с другом: программа, написанная для одной версии языка может оказаться невыполнимой для другой версии. Но в основном обе версии очень похожи.
Мы будем использовать версию 3 данного языка, некоторые из используемых примеров не будут работать с версией 2. Последняя версия языка, доступная в сентябре 2019 года — 3.7.4, именно её необходимо установить дома, скачав данную версию с сайта www.python.org.
Типы данных
Итак, мы видим, что Питон умеет работать как минимум с двумя видами данных — числами и строками. Числа записываются последовательностью цифр, также перед числом может стоять знак минус, а строки записываются в одинарных кавычках. 2 и '2' — это разные объекты, первый объект — число, а второй —строка. Операция + для целых чисел и для строк работает по-разному: для чисел это сложение, а для строк —конкатенация.
Кроме целых чисел есть и другой класс чисел: действительные (вещественные числа), представляемые в виде десятичных дробей. Они записываются с использованием десятичной точки, например, 2.0. В каком-то смысле, 2 и 2.0 имеют равные значение, но это—разные объекты. Например, можно вычислить значения выражения 'ABC' * 10 (повторить строку 10 раз), но нельзя вычислить 'ABC' * 10.0.
Определить тип объекта можно при помощи функции type:
>>> type(2) >>> type(‘2’) >>> type(2.0)
Обратите внимание —type является функцией, аргументы функции указываются в скобках после ее имени.
Вот список основных операций для чисел:
A + B — сумма;
A - B — разность;
A * B — произведение;
A / B — частное;
A ** B — возведение в степень. Полезно помнить, что квадратный корень из числа x — это x ** 0.5, а корень степени n это x ** (1 / n).
Есть также унарный вариант операции -, то есть операция с одним аргументом. Она возвращает число, противоположное данному. Например: -A.
В выражении может встречаться много операций подряд. Как в этом случае определяется порядок действий? Например, чему будет равно 1 + 2 * 3 ** 1 + 1? В данном случае ответ будет 8, так как сначала выполняется возведение в степень, затем – умножение, затем — сложение.
Более общие правила определения приоритетов операций такие:
- Выполняются возведения в степень справа налево, то есть 3 ** 3 ** 3 это .
- Выполняются унарные минусы (отрицания).
- Выполняются умножения и деления слева направо. Операции умножения и деления имеют одинаковый приоритет.
- Выполняются сложения и вычитания слева направо. Операции сложения и вычитания имеют одинаковый приоритет.
Основные операции над строками:
A + B — конкатенация;
A * n — повторение n раз, значение n должно быть целого типа.
Преобразование типов
Иногда бывает полезно целое число записать, как строку. И, наоборот, если строка состоит из цифр, то полезно эту строку представить в виде числа, чтобы дальше можно было выполнять арифметические операции с ней. Для этого используются функции, одноименные с именем типа, то есть int, float, str. Например, int('123') вернет целое число 123, а str(123) вернет строку '123'.
>>> str(2 + 2) * int('2' + '2') '4444444444444444444444'
Результатом будет строка из числа 4, повторенная 22 раза.
Запуск простейшей программы
В предыдущем задании мы использовали Питон для простых разовых вычислений, используя интерактивный режим. Например, было задание вычислить длину гипотенузы прямоугольного треугольника по ее катетам. Запустите текстовый редактор и напишите следующий текст:
a = 179 b = 197 c = (a ** 2 + b ** 2) ** 0.5 print (c)
Здесь мы используем переменные — объекты, в которых можно сохранять различные (числовые, строковые и прочие) значения. В первой строке переменной a присваивается значение 179, затем переменной b присваивается значение 971, затем переменной c присваивается значение арифметического выражения, равному длине гипотенузы.
После этого значение переменной c выводится на экран.
Сохраните этот текст в файле с именем hypot.py . Запустите терминал, перейдите в каталог, где лежит этот файл и выполните эту программу:
$ python3 hypot.py
Интерпретатор языка Питон, запущенный с указанием имени файла, запускается не в интерактивном режиме, а выполняет ту последовательность команд, которая сохранена в файле. При этом значения вычисленных выражений не выводятся на экран (в отличии от интерактивного режима), поэтому для того, чтобы вывести результат работы программы, то есть значение переменной c , нам понадобится специальная функция print .
Ввод данных: функция input()
Пример выше неудобен тем, что исходные данные для программы заданы в тексте программы, и для того, чтобы использовать программу для другого треугольника необходимо исправлять текст программы. Это неудобно, лучше, чтобы текст программы не менялся, а программа запрашивала бы у пользователя данные, необходимые для решения задачи, то есть запрашивала бы значения двух исходных переменных a и b . Для этого будем использовать функцию input() , которая считывает строку с клавиатуры и возвращает значение считанной строки, которое сразу же присвоим переменым a и b :
a = input() b = input()
Правда, функция input возвращает текстовую строку, а нам нужно сделать так, чтобы переменные имели целочисленные значения. Поэтому сразу же после считывания выполним преобразование типов при помощи фунцкии int , и запишем новые значения в переменные a и b .
a = int(a) b = int(b)
Можно объединить считывание строк и преобразование типов, если вызывать функцию int для того значения, которое вернет функция input :
a = int(input()) b = int(input())
Далее в программе вычислим значение переменной c и выведем результат на экран.
Теперь мы можем не меняя исходного кода программы многократно использовать ее для решения различных задач. Для того нужно запустить программу и после запуска программы ввести с клавиатуры два числа, нажимая после кажого числа клавишу Enter . Затем программа сама выведет результат.
Вывод данных: функция print()
Функция print может выводить не только значения переменных, но и значения любых выражений. Например, допустима запись print(2 + 2 ** 2) . Также при помощи функции print можно выводить значение не одного, а нескольких выражений, для этого нужно перечислить их через запятую:
a = 1 b = 2 print(a, '+', b, '=', a + b)
В данном случае будет напечатан текст 1 + 2 = 3 : сначала выводится зание переменной a , затем строка из знака “+”, затем значение переменной b , затем строка из знака “=”, наконец, значение суммы a + b .
Обратите внимание, выводимые значение разделяются одним пробелом. Но такое поведение можно изменить: можно разделять выводимые значения двумя пробелами, любым другим символом, любой другой строкой, выводить их в отдельных строках или не разделять никак. Для этого нужно функции print передать специальный именованный параметр, называемый sep , равный строке, используемый в качестве разделителя (sep — аббревиатура от слова separator, т.е. разделитель). По умолчанию параметр sep равен строке из одного пробела и между значениями выводится пробел. Чтобы использовать в качестве разделителя, например, символ двоеточия нужно передать параметр sep , равный строке ‘:’ :
print(a, b, c, sep = ':')
Аналогично, для того, чтобы совсем убрать разделитель при выводе нужно передать параметр sep , равный пустой строке:
print(a, '+', b, '=', a + b, sep = '')
Для того, чтобы значения выводились с новой строке, нужно в качестве параметра sep передать строку, состоящую из специального символа новой строки, которая задается так:
print(a, b, sep = '\n')
Символ обратного слэша в текстовых строках является указанием на обозначение специального символа, в зависимости от того, какой символ записан после него. Наиболее часто употребляется символ новой строки ‘\n’ . А для того, чтобы вставить в строку сам символ обратного слэша, нужно повторить его два раза: ‘\\’ .
Вторым полезным именованным параметром функции print является параметр end , который указывает на то, что выводится после вывода всех значений, перечисленных в функции print . По умолчанию параметр end равен ‘\n’ , то есть следующий вывод будет происходить с новой строки. Этот параметр также можно исправить, например, для того, чтобы убрать все дополнительные выводимые символы можно вызывать функцию print так:
print(a, b, c, sep = '', end = '')
Целочисленная арифметика
Для целых чисел определены ранее рассматривавшиеся операции + , — , * и ** . Операция деления / для целых чисел возвращает значение типа float . Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // . Она возвращает целое число: целую часть частного. Например:
>>> 17 // 3 5 >>> -17 // 3 -6
Другая близкая ей операция: это операция взятия остатка от деления, обозначаемая % :
>>> 17 % 3 2 >>> -17 % 3 1
Как ввести числа в 1 строке
Python 3 — это современный язык, на котором просто и приятно писать программы.
Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:
print(5 + 10) print(3 * 7, (17 - 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках
Для ввода данных в программу мы используем функцию input() . Она считывает одну строку.
Вот программа, которая считывает имя пользователя и приветствует его:
Пётр
print('Как вас зовут?') name = input() # считываем строку и кладём её в переменную name print('Здравствуйте, ' + name + '!')
Мы будем писать программы, которые считывают данные, перерабатывают их и выводят какой-то результат. При запуске на компьютере такие программы считывают данные, которые пользователь вводит с клавиатуры, а результат выводят на экран.
Попробуем написать программу, которая считывает два числа и выводит их сумму. Для этого считаем два числа и сохраним их в переменные a и b , пользуясь оператором присваивания = . Слева от оператора присваивания в программах на Питоне ставится имя переменной — например, строка из латинских букв. Справа от оператора присваивания ставится любое выражение. Имя станет указывать на результат вычисления выражения. Проиграйте эту программу и посмотрите на результаты её работы:
a = input() b = input() s = a + b print(s)
Мы видим, что программа выводит 57 , хотя в реальной жизни 5 + 7 будет 12 . Это произошло потому, что Питон в третьей строчке «сложил» две строки, а не два числа. В Питоне две строки складываются так: к первой строке приписывается вторая.
Обратите внимание, что в визуализаторе содержимое переменных a и b заключено в кавычки. Это означает, что в a и b лежат строки, а не числа.
В Питоне все данные называются объектами. Число 2 представляется объектом «число 2», строка ‘hello’ – это объект «строка ‘hello’ ».
Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str , целые числа хранятся в объектах типа int , дробные числа (вещественные числа) — в объектах типа float . Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных first и second лежат объекты типа int , то их можно перемножить, а если в них лежат объекты типа str , то их перемножить нельзя:
first = 5 second = 7 print(first * second) first = '5' second = '7' print(first * second)
Чтобы преобразовать строку из цифр в целое число, воспользуемся функцией int() . Например, int(’23’) вернет число 23 .
Вот пример правильной программы, которая считывает два числа и выводит их сумму:
a = int(input()) b = int(input()) s = a + b print(s)
Ввод нескольких переменных в одной строке
Добрый день. Можно ли сделать так, чтобы вместо списка вводилось 3 разных переменных, но в одной строке?
Так не получается
a, b, c = int(input())
Нужно ввести 3 числа в одной строке без использования списка, массива и т.п. Чтобы каждое число записалось в отдельную переменную.
Допустим
a, b, c = int(input())
Я ввожу «5 2 3»
И при
print(a)
print(b)
print(c)
пользователь получает
5
2
3
Лучшие ответы ( 3 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Ввод нескольких переменных в одной строке
Всем здравствуйте. Не давно начал изучать питон и решил порешать задачи. И буквально на первой.
Инициализация нескольких переменных в одной строке
Привет. Иногда нужно инициализировать переменные, иначе программа не запускается. Я сейчас так.
Ввод нескольких значений в одной строке
#include <iostream> #include <vector> using namespace std; int main() < int count; cin >>.
Как можно сделать ввод 3 переменных в одной строке?
Как можно сделать ввод 3 переменных в одной строке, чтобы программа была компактней? using.
Написать программу, которая обеспечивает ввод значений дробных переменных (типа float) u и r. Предполагается, что пользователь будет набирать числа в одной строке.
Немного непонятная задачка. Тут пользователь может вводить данные "значение пробел значение".
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
Сообщение было отмечено corpdid как решение
Решение
a, b, c = map(int, input().split())
Ввод чисел в одну строку
Ниже представлена задача. Помогите разобраться. Не получается вывести в консоль Визуал Студио в одну строку ввод и вывод
чтобы получилось именно так:
Введите три различных целых числа: 13 27 14.
Получается так:
Введите три различных числа : 13
27
14.
Где ошибка никак не пойму.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
/*Напишите программу, которая вводит три целых числа * с клавиатуры и печатает сумму, среднее значение * произведение, меньшее и большее из этих чисел. * Диалог на экране должен выглядеть следующим * образом: * Введите три различных целых числа: 13 27 14 * сумма равна 54 * среднее значение равно 18 * произведение равно 4914 * наименьшее равно 13 * наибольшее равно 27 */ #include using namespace std; int main() { setlocale(LC_ALL, "rus"); int a, b, c; cout "Введите три различных целых числа :"; cin >> a >> b >> c; cout "Сумма равна : "" " a + b + c; cout "\n"; cout "Среднее значение равно : "" " (a + b + c) / 3; cout "\n"; cout "Произведение равно : "" " a * b * c; cout "\n"; if (a b && a c) { cout "Наименьшее равно : "" " a; cout "\n"; } if (b a && b c) { cout "Наименьшее равно : "" " b; cout "\n"; } if (c a && c b) { cout "Наименьшее равно : "" " c; cout "\n"; } if (a > b && a > c) { cout "Наибольшее равно : "" " a; cout "\n"; } if (b > a && b > c) { cout "Наибольшее равно : "" " b; cout "\n"; } if (c > a && c > b) { cout "Наибольшее равно : "" " c; cout "\n"; } if (a == b == c) { cout """\n"; } system("pause"); return 0; }
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как сделать ввод в одну строку?
как сделать ввод в одну строку, через нажатие ентера и отступа на N расстояние, такого типа.
Ввод переменных через пробел в одну строку
на олимпиаде по информатике сегодня лажанулся капец как. хотел написать все на c++, пришлось.
Ввод чисел в одну строку
Здравствуйте, подскажите пожалуйста, как вводить числа в одну строку. если писать так: int array.
1980 / 1098 / 693
Регистрация: 25.04.2016
Сообщений: 3,120
Сообщение было отмечено igorent как решение
Решение
так и вводите 13 27 14 — три числа одной строкой через пробел
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include int main (void) { int a, b, c; std::cout "Введите три различных целых числа: "; std::cin >> a >> b >> c; std::cout "Сумма равна: " a+b+c std::endl "Среднее значение равно: " (a+b+c)/3.0 std::endl "Произведение равно: " a*b*c std::endl "Наименьшее равно: " std::min(std::min(a, b), c) std::endl "Наибольшее равно: " std::max(std::max(a, b), c) std::endl; system("pause"); return 0; }
Введите три различных целых числа: 13 27 14
Сумма равна: 54
Среднее значение равно: 18
Произведение равно: 4914
Наименьшее равно: 13
Наибольшее равно: 27