Вопрос или проблема
Интересно, возможно ли вводить два или более целых числа в одной строке стандартного ввода. В 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()
или генератор списка для конвертации строковых значений в целые числа.
Вот несколько способов, как это можно сделать:
-
Использование функции
map()
:a, b = map(int, input().split()) print("a:", a, "b:", b)
В этом примере программа считывает строку, разделяет её по пробелам и преобразует каждую из частей в целое число.
-
Использование генератора списка:
a, b = [int(x) for x in input().split()] print("a:", a, "b:", b)
Этот код делает то же самое, но использует список для хранения преобразованных значений.
-
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()
или генератора списка. Это позволит вам легко работать с несколькими значениями, введенными пользователем, в едином вводе.