Два значения из одного входа в python?

Это несколько простой вопрос, и я ненавижу спрашивать его здесь, но я не могу найти ответ в другом месте: возможно ли получить несколько значений от пользователя в одной строке Python?

Например, в C я могу сделать что-то вроде этого: scanf("%d %d", &var1, &var2). Однако я не могу понять, что такое эквивалент Python. Я полагал, что это будет просто что-то вроде var1, var2 = input("Enter two numbers here: "), но это не работает, и я не жалуюсь, потому что это не будет иметь большого смысла, если это произойдет.

Кто-нибудь знает хороший способ сделать это элегантно и лаконично?

Ответ 1

Путь Python для отображения

printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)

будет

var1, var2 = raw_input("Enter two numbers here: ").split()

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

У Python есть динамическая типизация, поэтому нет необходимости указывать %d. Однако, если вы запустили выше, то var1 и var2 будут обе строки. Вы можете преобразовать их в int с помощью другой строки

var1, var2 = [int(var1), int(var2)]

Или вы можете использовать понимание списка

var1, var2 = [int(x) for x in [var1, var2]]

Подводя итог, вы могли бы сделать все это с помощью этого однострочного интерфейса:

# Python 3
var1, var2 = [int(x) for x in input("Enter two numbers here: ").split()]

# Python 2
var1, var2 = [int(x) for x in raw_input("Enter two numbers here: ").split()]

Ответ 2

Вы не можете сделать это так (как мне кажется), но питонический способ сделать это будет (если ваши "входы" имеют промежутки между ними):

raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'

Итак, вы можете переписать свою попытку:

var1, var2 = raw_input("enter two numbers:").split(' ')

Обратите внимание, что это несколько менее гибко, чем использование "первого" решения (например, если вы добавите пробел в конец, это уже сломается).

Также имейте в виду, что var1 и var2 все равно будут строками с этим методом, если не будут переданы в int.

Ответ 3

В Python 2.*, input позволяет пользователю вводить любое выражение, например. кортеж:

>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45

В Python 3.*, input похож на 2.* raw_input, возвращая вам строку, которую только что набрал пользователь (а не eval как 2.*, используемый для input)), поэтому вам нужно будет .split и/или eval, & c, но вы также будете БОЛЬШЕ больше контролировать все это.

Ответ 4

Если вам нужно взять два целых числа, скажите a, b в python, вы можете использовать функцию карты.
Предположим, что вход имеет значение

1
5 3
1 2 3 4 5

где 1 представляет собой тестовый случай, 5 представляет количество значений, а 3 представляет значение задачи, а в следующей строке даны 5 значений, мы можем взять такой ввод, используя этот метод в версии PYTH 2.x.

testCases=int(raw_input())
number, taskValue = map(int, raw_input().split())
array = map(int, raw_input().split())

Вы можете заменить 'int' на map() другим необходимым типом данных.

Ответ 5

Весь вход будет через строку. Это зависит от вас, чтобы обработать эту строку после ее получения. Если это не так, вы используете метод eval (input()), но это не рекомендуется для большинства ситуаций.

input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)

Ответ 6

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

Например, вы вводите ввод 23 24 25. Вы ожидаете 3 разных входа, например

num1 = 23
num2 = 24
num3 = 25

Итак, в Python вы можете сделать

num1,num2,num3 = input().split(" ")

Ответ 7

Проверьте эту удобную функцию:

def gets(*types):
    return tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])

# usage:
a, b, c = gets(int, float, str)

Ответ 8

Решение, которое я нашел, следующее:


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

value = input("Enter 2 numbers (separated by a comma): ")

Затем строка разделяется: n берет первое значение и m второе

n,m = value.split(',')

Наконец, чтобы использовать их как целые числа, необходимо их преобразовать

n, m = int(n), int(m)


Ответ 9

Самый простой способ, который я нашел для себя, - использовать функцию разделения с помощью ввода Как и у вас есть две переменные a, b

a,b=input("Enter two numbers").split()

Что это. существует еще один метод (явный метод) Например, вы хотите ввести ввод в три значения

value=input("Enter the line")
a,b,c=value.split()

EASY..

Ответ 10

Это пример кода для ввода двух входов, разделенных командой split и разделителем как ","


>>> var1, var2 = input("enter two numbers:").split(',')
>>>enter two numbers:2,3
>>> var1
'2'
>>> var2
'3'


Другие варианты разделителей, которые можно использовать, следующие:
var1, var2 = input("enter two numbers:").split(',')
var1, var2 = input("enter two numbers:").split(';')
var1, var2 = input("enter two numbers:").split('/')
var1, var2 = input("enter two numbers:").split(' ')
var1, var2 = input("enter two numbers:").split('~')

Ответ 11

Для n чисел входных данных объявите переменную как пустой список и используйте тот же синтаксис для продолжения:

>>> x=input('Enter value of a and b').split(",")
Enter value of a and b
1,2,3,4
>>> x
['1', '2', '3', '4']

Ответ 12

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

Выход

10 8

10 8

Ответ 13

В Python 3 raw_input() была переименована в input().

input([prompt])

Если аргумент подсказки присутствует, он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из входных данных, преобразует ее в строку (удаляя завершающий символ новой строки) и возвращает ее. Когда EOF читается, EOFError повышается.

Так что вы можете сделать это

x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))

Если вы не поставите два числа, используя пробел, вы получите исключение ValueError. Так что это хорошо идти.

NB. Если вам нужно старое поведение input(), используйте eval(input())

Ответ 14

Я пробовал это в Python 3, кажется, работает нормально.

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

print(a)

print(b)

Вход: 3 44

Выход:

3

44

Ответ 15

Два входа разделены пробелом:

x,y=input().split()

Ответ 16

Это решение используется для преобразования нескольких строк, например ("22 44 112 2 34") в список целых чисел, и вы можете получить доступ к значениям в списке.

n = input("") # Like : "22 343 455 54445 22332"

if n[:-1] != " ":
n += " "

char = ""
list = []

for i in n :
    if i != " ":
        char += i
    elif i == " ":
        list.append(int(char))
        char = ""

print(list) # Be happy :))))

Ответ 17

Вы можете сделать это так

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

ИЛИ ЖЕ

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

ИЛИ ЖЕ

MyList = list(map(int, input().split()))
a = MyList[0]
b = MyList[1]