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

Нет, к сожалению, комментарии HTML не вкладываются.

32
задан Jonta 23 October 2011 в 18:21
поделиться

4 ответа

Способ 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()]
54
ответ дан 27 November 2019 в 19:58
поделиться

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

input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)
3
ответ дан 27 November 2019 в 19:58
поделиться

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

>>> 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. * 's raw_input , возвращая вам строку, которая является именно тем, что набрал пользователь (а не eval используется как 2. * используется для ввода ), поэтому вам придется .split и / или eval и т. Д., Но вы также будете НАМНОГО больше контролировать все это.

8
ответ дан 27 November 2019 в 19:58
поделиться

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

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

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

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

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

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

10
ответ дан 27 November 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: