#python #input #tuples
#python #ввод #кортежи
Вопрос:
Я пытаюсь создать кортеж из входных данных, где значения состоят из двух цифр.
tup = tuple(input("enter a tuple"))
но когда я ввожу что-то вроде 10 11
, я получаю это:
('1', '0', ' ', '1', '1')
Предполагаемый результат таков:
(10, 11)
Комментарии:
1. Python не знает, что вы хотите разделить символы на пробелы, если вы не сообщите ему что-то вроде:
tuple(input("enter a tuple").split())
Ответ №1:
Попробуйте это:
tup = tuple(int(n) for n in input("Enter a tuple: ").split(" "))
Это будет работать для целых чисел из любого количества символов, а также для целых отрицательных чисел.
Ответ №2:
Я уверен, что добавляю здесь дополнительный шаг, но это работает.
Val= "11 12"
Val=Val.split(" ")
Val=[int(x) for x in Val]
tuple(Val)
или, если вы хотите, чтобы одна строка была:
tuple([int(x) for x in raw_input("enter a tuple:").split(" ")])
Редактировать
Вы также можете просто использовать input
функцию, если используете python 2.7.
Tup=input("enter tuple:")
>(11,12,13)
print(Tup)
(11, 12, 13)
Но я считаю, что выполнение пользовательского ввода для программы считается рискованным и неприемлемым.
Комментарии:
1. Почему бы не использовать выражение генератора вместо превращения списка в кортеж? Кроме того, никогда не называйте переменную тем же именем, что и встроенная функция. В этом случае не называйте свою переменную
input
. Кроме того, ваш код выдаст ошибку в строке 2, посколькуinpust
не определен.