Напишите программу которая просит пользователя что нибудь ввести с клавиатуры
О бычно программа работает по такой схеме: получает входные данные → обрабатывает их → выдает результат. Ввод может поступать как непосредственно от пользователя через клавиатуру, так и через внешний источник (файл, база данных).
В стандартной библиотеке Python 3 есть встроенная функция input() (в Python 2 это raw_input() ), которая отвечает за прием пользовательского ввода. Разберемся, как она работает.
Чтение ввода с клавиатуры
Функция input([prompt]) отвечает за ввод данных из потока ввода:
- При вызове функции input() выполнение программы приостанавливается до тех пор, пока пользователь не введет текст на клавиатуре (приложение может ждать бесконечно долго).
- После нажатия на Enter , функция input() считывает данные и передает их приложению (символ завершения новой строки не учитывается).
- Полученные данные присваиваются переменной и используются дальше в программе.
input() всегда возвращает строку :
Также у input есть необязательный параметр prompt – это подсказка пользователю перед вводом:
name = input("Введите имя: ") print(f"Привет, !") > Введите имя: Вася > Привет, Вася!
📃 Более подробное описание функции из документации:
def input([prompt]): """ Read a string from standard input. The trailing newline is stripped. The prompt string, if given, is printed to standard output without a trailing newline before reading input. If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. On *nix systems, readline is used if available. """ pass
Преобразование вводимые данные
Данные, введенные пользователем, попадают в программу в виде строки, поэтому и работать с ними можно так же, как и со строкой. Если требуется организовать ввод цифр, то строку можно преобразовать в нужный формат с помощью функций явного преобразования типов.
☝️ Важно : если вы решили преобразовать строку в число, но при этом ввели строку (например: test), возникнет ошибка:
На практике такие ошибки нужно обрабатывать через try except . В примере ниже пользователь будет вводить данные до тех пор, пока они успешно не преобразуются в число.
def get_room_number(): while True: try: num = int(input("Введите номер комнаты: ")) return num except ValueError: print("Вы ввели не число. Повторите ввод") room_number = get_room_number() print(f"Комната успешно забронирована!") > Введите номер комнаты: test > Вы ввели не число. Повторите ввод > Введите номер комнаты: 13 > Комната 13 успешно забронирована!
Input() → int
Для преобразования в целое число используйте функцию int() . В качестве аргумента передаются данные которые нужно преобразовать, а на выходе получаем целое число:
То же самое можно сделать в одну строку: age = int(input("Введите ваш возраст: ")) .
Input() → float
Если нужно получить число с плавающей точкой (не целое), то его можно получить с помощью функции float() .
Input() → list (список)
Если в программу вводится информация, которая разделяется пробелами, например, "1 word meow", то ее легко преобразовать в список с помощью метода split() . Он разбивает введенные строки по пробелам и создает список:
💭 Обратите внимание, что каждый элемент списка является строкой. Для преобразования в число, можно использовать int() и цикл for. Например, так:
Ввод в несколько переменных
Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:
В этом примере строка из input() разбивается по пробелу функцией split() . Далее применяется синтаксис распаковки – каждый элемент списка попадает в соответствующую переменную.
Все переменные после распаковки будут строкового типа. Преобразовать их (например в int) можно так:
☝️ Важно : не забывайте обрабатывать ошибки:
В этом руководстве вы узнали, как принимать данные от пользователя, введенные с клавиатуры, научились преобразовывать данные из input и обрабатывать исключения.
Получение и обработка информации — один из важнейших элементов любого языка программирования, особенно если речь идет о получении информации от пользователей.
Python, будучи медленным относительно таких языков, как C или Java, предлагает продвинутые инструменты для получения, анализа и обработки данных от конечного пользователя.
В этом материале речь пойдет о том, какие функции Python можно использовать для этих целей.
Ввод в Python
Для получения информации с клавиатуры в Python есть функции input() или raw_input() (о разнице между ними чуть позже). У них есть опциональный параметр prompt , который является выводимой строкой при вызове функции.
Когда input() или raw_input() вызываются, поток программы останавливается до тех пор, пока пользователь не введет данные через командную строку. Для ввода нужно нажать Enter после завершения набора текста. Обычно Enter добавляет символ новой строки ( \n ), но не в этом случае. Введенная строка просто будет передана приложению.
Интересно, что кое-что поменялось в принципе работе функции между Python 2 и Python 3, что отразилось в разнице между input() и raw_input() . Об этом дальше.
Сравнение функций input и raw_input
Разница между этими функциями зависит от версии Python. Так, в Python 2 функция raw_input() используется для получения ввода от пользователя через командную строку, а input() оценивает ее и попробует запустить как код Python.
В Python 3 от raw_input() избавились, оставив только input() . Она используется для получения ввода пользователя с клавиатуры. Возможности input() из Python 2 в Python 3 работать не будут. Для той же операции нужно использовать инструкцию eval(input()) .
Взгляните на пример функции raw_input в Python 2.
Вывод
А вот как она работает в Python 3
Вывод
Дальше в материале будет использоваться метод input из Python 3, если не указано другое.
Строковый и числовой ввод
По умолчанию функция input() конвертирует всю получаемую информацию в строку. Прошлый пример продемонстрировал это.
С числами нужно работать отдельно, поскольку они тоже изначально являются строками. Следующий пример показывает, как можно получить информацию числового типа:
Вывод
Того же можно добиться и таким образом:
Здесь сразу после сохранения ввода происходит преобразование и присваивание значения переменной.
Нужно лишь отметить, что если пользователь ввел не целое число, то код вернет исключение (даже если это число с плавающей точкой).
Обработка исключений ввода
Есть несколько способов, как можно удостовериться в том, что пользователь ввел корректные данные. Один из них — перехватывать все возможные ошибки, которые могут возникнуть.
Вот такой код считается небезопасным:
Запустим его и введем следующее:
При вызове функции int() со строкой Пять появится исключение ValueError , и программа остановит работу.
Вот как можно сделать код безопаснее и обработать ввод:
Этот блок оценит ввод. Если он является целым числом, представленным в виде строки, то функция input() конвертирует его в целое число. Если нет, то программа выдаст исключение, но вместо ошибки оно будет перехвачено. В результате вызовется вторая инструкция print .
Вот так будет выглядеть вывод с исключением.
Такой код можно объединить с другой конструкцией, например, циклом for, чтобы убедиться, что код будет выполняться постоянно, до тех пор, пока пользователь не введет те данные, которые требуются.
Полный пример
Вывод:
Выводы
В этой статье вы узнали, как встроенные инструменты Python используются для получения пользовательского ввода в разных форматах. Также научились обрабатывать исключения и ошибки, которые могут возникнуть в процессе.
2. Напишите программу (файл PosNeg. py), которая запрашивает у пользователя число. Если оно больше нуля, то в ответ на экран выводится число 1. Если введëнное число не является положительным, то на экран должно выводиться -1.
Ответы 7
На понятном языке:
На понятном языке:
44 - найти длины всех сторон и градусные меры всех углов
59- а в квадрате
60- произведение высоты на основание
61- половина произведения диагоналей
64-половина произведения его катетов
66 - полусумма оснований умноженная на высоту
Тема текста: Как вести себя в общении с другими людьми.
Основная мысль: "Чем бы тебе ни приходилось заниматься, делай это как следует, делай тщательно, не кое-как."
Название : Манеры поведения
Const
N = 10;
Var
A:array[1..N] of integer;
i,j,M,B,C,p,s:integer;
Begin
Randomize;
Write('Исходный массив:');
For i:= 1 to N do
Begin
A[i]:=random(N);
Write(' ',A[i]);
End;
WriteLn;
p:=0;
For i:= 1 to N do
Begin
M:=i;
For j:= i+1 to N do
if A[j]<A[M] then M:=j;
if M<>i then
Begin
B:=A[M];
A[M]:=A[i];
A[i]:=B;
p:=p+1;
Write('Перестановка №',p,':');
For j:= 1 to N do
Write(' ',A[j]);
WriteLn;
End;
End;
WriteLn;
Write('Отсортированный массив:');
For i:= 1 to N do
Write(' ',A[i]);
WriteLn;
Write('Введите число: ');ReadLn(C);
m:=N div 2;
i:=1;
j:=N;
s:=0;
While (A[m]<>C)and(i<=j) do
Begin
if C > A[m] then i:=m+1
else j:=m-1;
s:=s+1;
m:=(i+j) div 2;
End;
WriteLn;
if A[m]=C then WriteLn('В массиве есть данное число')
else WriteLn('В массиве нет данного числа');
WriteLn('Кол-во перестановок за сортировку: ',p);
WriteLn('Кол-во сравнений за поиск: ',s);
End.
Примеры:
Исходный массив: 0 4 5 4 1 2 6 7 0 7
Перестановка №1: 0 0 5 4 1 2 6 7 4 7
Перестановка №2: 0 0 1 4 5 2 6 7 4 7
Перестановка №3: 0 0 1 2 5 4 6 7 4 7
Перестановка №4: 0 0 1 2 4 5 6 7 4 7
Перестановка №5: 0 0 1 2 4 4 6 7 5 7
Перестановка №6: 0 0 1 2 4 4 5 7 6 7
Перестановка №7: 0 0 1 2 4 4 5 6 7 7
Отсортированный массив: 0 0 1 2 4 4 5 6 7 7
Введите число: 3
В массиве нет данного числа
Кол-во перестановок за сортировку: 7
Кол-во сравнений за поиск: 4
Исходный массив: 4 4 1 3 4 4 5 0 7 2
Перестановка №1: 0 4 1 3 4 4 5 4 7 2
Перестановка №2: 0 1 4 3 4 4 5 4 7 2
Перестановка №3: 0 1 2 3 4 4 5 4 7 4
Перестановка №4: 0 1 2 3 4 4 4 5 7 4
Перестановка №5: 0 1 2 3 4 4 4 4 7 5
Перестановка №6: 0 1 2 3 4 4 4 4 5 7
Отсортированный массив: 0 1 2 3 4 4 4 4 5 7
Введите число: 5
В массиве есть данное число
Кол-во перестановок за сортировку: 6
Кол-во сравнений за поиск: 2
Я Вас поздравляю! Вы подошли вплотную к самому важному этапу - это практика программирования. Надеюсь, что вы внимательно прочли первые одиннадцать глав моего учебника, поэксперементировали со всеми исходными кодами программ, описанными в этих главах и у вас получилось. Теперь мы закрепим пройденный материал практикой. Все задания по практике программирования построены по принципу от простого к сложному, поэтому выполнять их нужно строго последовательно. Итак, приступим.
Напишите программу, которая просит пользователя ввести два числа, получает числа от пользователя и затем печатает сумму, произведение, разность и частное этих чисел.
Напишите программу, которая печатает числа от 1 до 4 на одной и той же строке, так что соседние числа разделены одним пробелом. Напишите программу, используя следующие способы:
а) Используя один оператор вывода с одним оператором поместить в поток.
b) Используя один оператор вывода с четырьмя операторами поместить в поток.
c) Используя четыре оператора вывода.
Напишите программу, которая вводит три целых числа с клавиатуры и печатает сумму, среднее значение, произведение, меньшее и большее из этих чисел. Диалог на экране должен выглядеть следующим образом:
Напишите программу, которая считывает радиус круга и печатает диаметр круга, длину окружности и площадь. Используйте значение константы 3.14159 для числа p. Выполните эти вычисления в операторе вывода. (Замечание: константа в отличие от переменной не может изменять свое значение на протяжении работы программы. Для этого в языке программирования С++ предусмотрен спецификатор const, которые запрещает изменение константного значения. В случае его изменения в коде программы, компилятор выдает ошибку еще на стадии компиляции программы. Константа объявляется также как и переменная, только перед объявлением добавляется ключевое слово const. Например:
Константа дробного типа с обычной точностью (6-ть знаков после запятой)).
Напишите программу, которая печатает прямоугольник, овал, стрелу и ромб в следующем виде
Напишите программу, которая считывает пять целых чисел, определяет и печатает наибольшее и наименьшее из них. Используйте только те приемы программирования, которые мы с вами изучили в предыдущих главах учебника (Подсказка: используйте вложенные конструкции оператора if)
Напишите программу, которая считывает целое число, определяет и печатает, четное оно или нечетное. (Подсказка: Используйте операцию вычисления остатка. Четное число кратно двум. Любое число, кратное двум, при делении на 2 дает в остатке нуль.).
Напишите программу, которая считывает два целых числа, определяет и печатает, является ли первое число кратным второму. (Подсказка: используйте операцию вычисления остатка)
Отобразите модель шахматной доски восемью операторами вывода и затем отобразите ту же модель наименьшим возможным количеством операторов вывода:
Заглянем вперед. В предшествующих главах учебника вы узнали о целых числах и типе int . C++ может также представлять прописные и строчные буквы и значительное многообразие специальных символов. Для представления каждого отдельного символа С++ использует небольшие целые числа. Компьютер использует множество символов и соответствующие целые представления для этих символов называются набором символов компьютера. Вы можете напечатать символ, просто заключив его в одиночные кавычки
Вы можете напечатать целочисленный эквивалент символа, записав перед ним (int) - это называется приведением к типу.
Когда выполняется предшествующий оператор, он печатает значение 65 (в системе, которая использует так называемый набор символов ASCII). Напишите программу, которая печатает целочисленные эквиваленты ряда прописных и строчных букв, цифр и специальных символов. Как минимум, определите целочисленные эквиваленты следующих символов: A B C a b c 0 1 2 $ * + / и пробела.
Напишите программу, которая вводит число из пяти цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя пробелами между ними. Например, если пользователь вводит в программу 42339, то должно быть напечатано
Читайте также: