Как ввести два целых числа в одной строке в Python?

Вопрос или проблема

Интересно, возможно ли вводить два или более целых числа в одной строке стандартного ввода. В C/C++ это легко:

C++:

#include <iostream>
int main() {
    int a, b;
    std::cin >> a >> b;
    return 0;
}

C:

#include <stdio.h>
void main() {
    int a, b;
    scanf("%d%d", &a, &b);
}

В Python это не сработает:

script.py:

#!/usr/bin/python3
a = int(input())
b = int(input())
$ python3 script.py
3 5
Traceback (most recent call last):
  File "script.py", line 2, in <module>
    a = int(input())
ValueError: invalid literal for int() with base 10: '3 5'

Так как же это сделать?

Разделите введенный текст по пробелам:

a, b = map(int, input().split())

Демо:

>>> a, b = map(int, input().split())
3 5
>>> a
3
>>> b
5

Если вы используете Python 2, то ответ, предоставленный Мартейном, не работает. Вместо этого используйте:

a, b = map(int, raw_input().split())

x,y = [int(v) for v in input().split()]
print("x : ",x,"\ty: ",y)

В Python каждый раз, когда мы используем функцию input(), она сразу переходит к следующей строке. Чтобы использовать несколько входных данных в строке, нам нужно использовать метод split() вместе с функцией input, чтобы получить желаемый результат.

a, b = [int(z) for z in input().split()]
print(a, b)

Ввод:

3 4

Вывод:

3 4

x, y = int(input()),  int(input())
print("x : ",x,"\ty: ",y)

Ответ или решение

В Python действительно можно вводить несколько целых чисел в одной строке стандартного ввода, и это делается достаточно просто.

Для ввода двух целых чисел в одной строке вы можете воспользоваться функцией input(), которая считывает всю строку ввода, а затем использовать метод split() для разделения этой строки на отдельные части. После этого можно применить функцию map() или генератор списка для конвертации строковых значений в целые числа.

Вот несколько способов, как это можно сделать:

  1. Использование функции map():

    a, b = map(int, input().split())
    print("a:", a, "b:", b)

    В этом примере программа считывает строку, разделяет её по пробелам и преобразует каждую из частей в целое число.

  2. Использование генератора списка:

    a, b = [int(x) for x in input().split()]
    print("a:", a, "b:", b)

    Этот код делает то же самое, но использует список для хранения преобразованных значений.

  3. Python 2:
    Если вы используете Python 2, то вместо input() следует использовать raw_input():

    a, b = map(int, raw_input().split())
    print("a:", a, "b:", b)

Пример работы

Предположим, вы вводите два числа:

3 5

После ввода программа присвоит переменным a и b значения, соответственно, 3 и 5. Вывод будет:

a: 3 b: 5

Заключение

Таким образом, ввод двух целых чисел в одной строке в Python можно осуществить с помощью input(), split() и map() или генератора списка. Это позволит вам легко работать с несколькими значениями, введенными пользователем, в едином вводе.

Оцените материал
Добавить комментарий

Капча загружается...