Команда if и функция input в Python
В Python существует три команды выбора, которые исполняют код в зависимости от установленных условий, значений которых может быть истинным (True) либо ложным (False).
1. Проверка условий в Python.
Проверка равенств.
Регулярно в программах переменные сравниваются с другими переменными или значениями. Самое простое условия, это проверить равно ли значение переменной конкретному значению.
>>> car = ‘audi’
>>> car == ‘audi’
True
Присвоим переменной car значение ‘audi’. Во второй строке проверим равно ли значение переменной car. Двойной знак равно ( == ) используется для проверки равенства. В итоге Python возвращает значение True , означающий что значения равны. В случае неравенства значений, возвращается False .
>>> car = ‘audi’
>>> car == ‘bmw’
False
В Python проверка равенства выполняется с учетом регистра. В случае написания значений с разным регистром, значения получаются не равными.
>>> car = ‘audi’
>>> car == ‘Audi’
False
Проверка неравенства.
Проверка неравенства происходит с помощью восклицательного знака и знака равно ( != ). Восклицательный знак представляет отрицание, как и во многих языках программирования.
>>> car = ‘audi’
>>> car != ‘bmw’
True
1.2. Проверка нескольких условий.
Использование and для проверки нескольких условий.
Для проверки нескольких условий одновременно, используйте ключевое слово and . Чтобы выражение было истинно (True) оба условия должны быть истинны. В примере проверим возраст людей, чтобы был младше или в возрасте 30 лет.
>>> age_1 = 29
>>> age_2 = 20
>>> age_1 True
Если оба условия выполнены, то возвращается True.
Использование or для проверки нескольких условий.
При использовании ключевого слова or , проверка будет истинна если выполнено хотя бы одно условие в выражение. Проверим теперь чтобы хотя бы один из людей был младше 25 лет.
>>> age_1 = 29
>>> age_2 = 20
>>> age_1 < 25 or age_2 < 25
True
2. Функция input() .
- Функция input() запрашивает данные у пользователя и получает их. Получив данные, сохраняет их в переменной и в последующем вы можете работать с этой переменной.
>>> name = input (‘Как вас зовут? ‘)
Как вас зовут? Ян # вводит пользователь
>>> print(name)
Ян
- Функция input() всегда возвращает строку. Если мы захотим сложить два числа, то получим не верный ответ. Пример:
>>> a = input (‘Введите число: ‘)
Введите число: 5
>>> b = input (‘Введите число: ‘)
Введите число: 10
>>> a + b
‘510’
Вместо того чтобы сложить 5 и 10 и в итоге получить 15, Python складывает строковое значения ‘5’ и ‘10′, и в итоге получает строку ‘510’. Это операция называется конкатенация строк. В результате создается новая строка из левого операнда, за которым следует правый.
- Если вам требуется получить целое число, то преобразуйте строку в число с помощью функцииint () :
>>> a = int( input (‘Введите число: ‘))
Введите число: 5
>>> b = int( input (‘Введите число: ‘))
Введите число: 10
>>> a + b
15
- Если вам требуется получить число с плавающей точкой, то используйте функцию float()
>>> a = float( input (‘Введите число: ‘))
Введите число: 12.5
>>> b = float( input (‘Введите число: ‘))
Введите число: 7.3
>>> a + b
19.8
3.1. Команда if .
Самая простая команда if состоит из одного условия и одного действия.
дествие # отступ в 4 пробела
Приведем пример программы, которая определяет платный ли вход в кинотеатр:
>>> age = 25
>>> if age >= 18 :
. print(‘Вход в кинотеатр для вас платный’)
. print(‘Приобретите билет в кассе’)
.
Вход в кинотеатр для вас платный
Приобретите билет в кассе
В первой строке команды if мы размещаем условия, а во второй строке кода с отступом — практически любое действие. В случае выполнения условия выполняется действие, если условие не выполнено, ничего не происходит.
3.2. Команда if-else .
В случае если необходимо выполнить другое действие если условие ложно, можно воспользоваться командой if-else . Блок if записывается так же, как и раньше, а после него записывается блок else с набором действий в случае невыполнения команды if .
>>> age = 17
>>> if age >= 18 :
. print(‘Вход в кинотеатр для вас платный’)
. print(‘Приобретите билет в кассе’)
. else:
. print(‘Для вас вход бесплатный’)
.
Для вас вход бесплатный
Блок else записывается на уровне блока If , без 4 пробелов.
3.3. Команда if-elif-else .
Команда if-elif-else позволяет проверить сразу несколько условий. Предположим, стоимость билетов кинотеатр изменяется в зависимости от возврата посетителя.
>>> age = 35
>>> if age . print(‘Для вас вход бесплатный’)
. elif age < 18 :
. print(‘Стоимость билета 500 руб’)
. elif age . print(‘Стоимость билета 1000 руб’)
. else:
. print(‘Для вас вход бесплатный’)
.
Стоимость билета 1000 руб
Код выполняется последовательно, программа вначале проверяет соответствие возраста меньше или равно 7 лет, затем < 18 и т.д. Как только условия выполняются, Python выводит результат и действие программы прекращается. Важно ставить правильную последовательность условий. К примеру, если мы поставим условие младше или равно 60 в начало, то возраст меньше 7 и 18 не будет работать и программа сразу выдаст результат максимальной стоимости билета.
Наличие секции else в команде if-elif-else необязательно. Ее присутствие позволяет обработать результат, не удовлетворяющий никаким условиям.
4. Команда if со списками.
С помощью команды if , например при переборе списка, возможно использовать каждый элемент на свое усмотрение.
>>> cars = [ ‘ford’, ‘opel’, ‘audi’, ‘land rover’, ‘bmw’ ]
>>> for brand in cars:
. if brand == ‘audi’ :
. print(f»Гарантия на автомобиль 2 года»)
. elif brand == ‘bmw’ :
. print(f»Гарантия на автомобиль 3 года»)
. else:
. print(f»Гарантия на автомобиль 5 лет»)
.
Гарантия на автомобиль Ford 5 лет
Гарантия на автомобиль Opel 5 лет
Гарантия на автомобиль Audi 2 года
Гарантия на автомобиль Land Rover 5 лет
Гарантия на автомобиль Bmw 3 года
В данном примере с помощью команды for мы перебираем весь список автомобилей. Если марка автомобиля соответствует условия if-elif , то выводится для этих марок свое сообщение по условиям гарантии. В случае не совпадения условий, выдается общее сообщение для всех остальных марок.
Функция input() в Python, ввод данных с клавиатуры
Функция input() позволяет обеспечить ввод пользовательских данных из консоли. Если передан необязательный аргумент подсказки prompt , то он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из ввода и преобразует ее в СТРОКУ, убирая завершающий символ строки ‘\n’ и возвращает ее в качестве значения.
Другими словами, все что вводится в консоль при использовании встроенной функции input() преобразуется в тип str . Это происходит в том числе и с числами. Следовательно, числовые данные, перед их использованием необходимо распознавать и преобразовывать к нужным типам.
Если был импортирован модуль readline , то функция input() будет использовать его для обеспечения сложных функций редактирования строк и истории.
- В случае считывания EOF (признак конца файла), поднимается исключение EOFError .
- Перед чтением ввода, функция input() вызывает событие аудита input с аргументом prompt .
- После успешного чтения ввода, вызывает событие аудита input c результатом resultс .
Примеры получения/ввода данных из консоли/клавиатуры.
- Общие примеры использования функции input() ;
- Проверка и преобразование типов при вводе данных с клавиатура;
- Эмуляция терминала с использованием функцией input() .
Общие примеры использования функции input() .
>>> x = input('Enter your name:') # Enter your name:Anton >>> print('Hello, ', x) # Hello, Anton # Можно и без строки подсказки >>> print('Введите число:') # Введите число: >>> x = input() # 10 # Не забываем что функция # возвращает строку >>> x # '10'
Проверка и преобразование типов при вводе данных с клавиатура.
Пример представляет собой программу подсчета суммы или произведения введенных в консоль чисел. В примере будем распознавать числовые типы на примере типов int и float , читаемые функцией input() из консоли интерпретатора Python.
# test.py def str_to_num(line): """функция конвертирует строку в число""" line = line.strip() # если в строке только цифры if line.isdigit(): return int(line) # если строка содержит точку или запятую elif '.' in line or ',' in line: # если из строки убрать точку или запятую # и при этом в строке останутся только цифры if any(line.replace(x, '').isdigit() for x in ['.', ',']): return float(line.replace(',', '.')) else: # ошибка print('Это не число!\n') return None print('\nДля выхода из программы введите Ctrl+C') print('Для окончания ввода цифр нажмите Enter\n') nums = [] while True: inpt = input('Ожидается ввод числа или Enter:') if inpt == '': # Закончить ввод чисел break n = str_to_num(inpt) if n is not None: nums.append(n) if nums: if len(nums) == 1: print('Вы ввели одну цифру: ', nums[0]) else: print('\nВыберите действие:') print(' сложить цифры введите 1;') print(' умножить цифры введите 2.\n') rez = None while True: inpt = input('Введите 1 или 2:') inpt = inpt.strip() if inpt == '1': rez = sum(nums) print('Сумма введенных чисел:', rez) elif inpt == '2': rez = 1 for i in nums: rez *= i print('Произведение введенных чисел:', rez) else: print('Неправильное действие.\n') if rez is not None: break else: print('Вы ничего не ввели.')
$ python3 test.py Для выхода из программы введите Ctrl+C Для окончания ввода цифр нажмите Enter Ожидается ввод числа или Enter:10 Ожидается ввод числа или Enter:13.9 Ожидается ввод числа или Enter:9,9 Ожидается ввод числа или Enter: Выберите действие: сложить цифры введите 1; умножить цифры введите 2. Введите 1 или 2:2 Произведение введенных чисел: 1376.1000000000001
Эмуляция терминала с использованием функцией input() .
Для воспроизведения вывода ошибок при выполнении команд в воображаемой «консоли» воспользуемся модулем traceback . Выполнять введенный код будем при помощи встроенной функции exec() .
# test.py import sys, traceback def run_user_code(envdir): source = input(">>> ") try: # Выполнение введенного кода с клавиатуры exec(source, envdir) except Exception: print("Exception in user code:") print("-"*60) traceback.print_exc(file=sys.stdout) print("-"*60) # словарь для хранения введенных переменных envdir = <> while True: run_user_code(envdir)
Запускаем эмуляцию интерпретатора Python.
$ python3 test.py >>> a = 3 >>> b = '1' >>> a + b Exception in user code: ------------------------------------------------------------ Traceback (most recent call last): File "tt.py", line 6, in run_user_code exec(source, envdir) File "", line 1, in TypeError: unsupported operand type(s) for +: 'int' and 'str' ------------------------------------------------------------
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Как пользоваться командой input в python
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)
input
prompt — Строка-приглашение, которая должна быть отправлена на стандартное устройство вывода (заключительный перевод каретки при этом удаляется).
Если загружен модуль readline , тогда функция воспользуется им для удобства ввода пользователя (например, для поддержки истории команд).
Функция считывает строку данных, полученную с устройства ввода и возвращает её без заключительного перевода каретки.
В случае считывания EOF (признак конца файла), поднимается исключение EOFError.
my_str = input('Expression: ') # Expression: 2+2
my_str # 2+2
my_str = input('Your string here: ') # Your string here: my string
my_str # my string
Python 2
Вызов функции эквивалентен вызову eval(raw_input(prompt)).
my_str = raw_input('Expression: ') # Expression: 2+2
my_str # 4
На заметку
В общем случае для получения данных от пользователя следует использовать raw_input().
Если введённая строка синтаксически некорректна поднимается исключение SyntaxError.
Если произойдёт ошибка в ходе вычисления строки, могут быть подняты и другие исключения.
