Создайте кортеж с двузначными значениями из входных данных в Python

#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 не определен.