Ввод двух значений: руководство по input

Раздел: Работа с множественным вводом -> Ввод нескольких чисел

Варианты ввода двух переменных a и b в Python

Как ввести два числа через пробел в одной строке?

Основной способ ввода нескольких чисел в Python - использование метода split() и функции map(). Пользователь вводит строку, содержащую числа, разделенные пробелами. Метод split() разбивает строку на список подстрок по пробелам. Функция map() преобразует каждую подстроку в целое число. Затем происходит распаковка в переменные a и b.

a, b = map(int, input().split())
print(f"a = {a}, b = {b}")

Python a b input (ввод двух переменных a и b в python)

Ввод: 10 20
Вывод: a = 10, b = 20

Возможные проблемы: Если ввести больше двух чисел, возникнет ошибка «ValueError: too many values to unpack». Если меньше двух – «ValueError: not enough values to unpack». Решение: перед распаковкой проверить количество элементов или использовать звездочку для сбора оставшихся:

numbers = list(map(int, input().split()))
if len(numbers) != 2:
    print("Необходимо ввести ровно два числа")
else:
    a, b = numbers

Как ввести каждое число с новой строки?

Если требуется вводить числа по одному на каждой строке, используют два вызова input(). Каждое значение преобразуется отдельно. Это удобно, когда пользователю нужно видеть подсказки для каждой переменной.

a = int(input("Введите a: "))
b = int(input("Введите b: "))
print(f"a = {a}, b = {b}")
Введите a: 10
Введите b: 20
a = 10, b = 20

При вводе нечислового значения возникнет ошибка ValueError. Для обработки ошибок можно использовать try/except.

Как ввести числа, разделенные запятой?

Метод split() принимает разделитель. Если числа вводятся через запятую с пробелами, их можно удалить с помощью strip() или использовать split(',') с последующей очисткой.

a, b = map(int, input().split(','))  # запятая без пробелов
# если есть пробелы: a, b = map(int, input().replace(' ', '').split(','))
Ввод: 10,20
Вывод: a = 10, b = 20
Ввод: 10, 20
Вывод: ValueError: invalid literal for int() with base 10: ' 20'

При наличии пробелов после запятой нужно удалять лишние символы. Лучше использовать split(',') и затем strip() для каждого элемента.

Как защититься от неверного ввода?

Обернуть преобразование в блок try/except, и повторять запрос до получения корректных значений.

while True:
    try:
        a, b = map(int, input("Введите два числа через пробел: ").split())
        break
    except ValueError:
        print("Ошибка: введите ровно два целых числа.")

Как проверить, что введено ровно два числа?

Получить список чисел, затем проверить его длину.

values = list(map(int, input().split()))
if len(values) != 2:
    print("Введите два числа, разделенных пробелом.")
else:
    a, b = values

Как ввести числа с использованием sys.stdin для скорости?

При большом количестве вводимых данных используют sys.stdin.readline, которая быстрее input().

import sys
data = sys.stdin.readline().split()
a, b = map(int, data)

Важно помнить, что sys.stdin.readline возвращает строку с символом новой строки, но split() его удаляет.

Как извлечь числа из строки с помощью регулярных выражений?

Если ввод содержит лишние символы, можно использовать re.findall для поиска всех чисел.

import re
numbers = list(map(int, re.findall(r'-?\d+', input())))
a, b = numbers[:2]  # взять первые два

Расширенные примеры ввода двух переменных

Здесь собраны дополнительные сценарии и нестандартные подходы к вводу двух чисел.

Пример 1. Ввод чисел с плавающей точкой

Пример
a, b = map(float, input().split())
print(f"a = {a:.2f}, b = {b:.2f}")
Ввод: 3.14 2.71
Вывод: a = 3.14, b = 2.71

Пример 2. Ввод чисел через точку с запятой

Пример
a, b = map(int, input().split(';'))
print(a + b)
Ввод: 5;10
Вывод: 15

Пример 3. Использование спискового включения

Пример
numbers = [int(x) for x in input().split()]
a, b = numbers

Пример 4. Безопасный ввод с помощью ast.literal_eval

Пользователь может ввести кортеж вида (10, 20).

Пример
import ast
try:
    a, b = ast.literal_eval(input("Введите два числа через запятую в скобках: "))
    print(f"a = {a}, b = {b}")
except:
    print("Ошибка формата")

Пример 5. Ввод нескольких пар чисел с помощью цикла

Пример
n = int(input("Сколько пар ввести? "))
pairs = []
for _ in range(n):
    a, b = map(int, input().split())
    pairs.append((a, b))
print(pairs)
Ввод: 2
1 2
3 4
Вывод: [(1, 2), (3, 4)]

Пример 6. Ввод с обработкой лишних пробелов

Пример
a, b = map(int, input().strip().split())

Пример 7. Использование maxsplit для ограничения количества разделений

Пример
first, rest = input().split(maxsplit=1)
a = int(first)
b = int(rest.strip())  # если rest содержит еще пробелы

Пример 8. Ввод чисел из строки с несколькими разделителями

Пример
import re
line = input()
numbers = [int(x) for x in re.split(r'[,\s;]+', line) if x]
a, b = numbers[:2]
Ввод: 10, 20; 30 40
Вывод: a=10, b=20

Пример 9. Использование генератора для ленивого чтения

Пример
it = iter(input().split())
a = int(next(it))
b = int(next(it))

Пример 10. Ввод с помощью eval (только для контролируемого окружения)

Пример
a, b = eval(input("Введите a, b: "))  # например, 10, 20

Внимание: eval может выполнить произвольный код, поэтому использовать его не рекомендуется. Для безопасного ввода используйте ast.literal_eval.

Ввод двух переменных a и b в Python - comments

En
Python a b input (python)