Create a tuple from an input in Python
Asked Answered
D

5

7

Here is my example:

>>> a=input ('some text : ')  # value entered is 1,1
>>> print (a)
1,1

I want as a result a tuple (1, 1)

How can I do this?

Douche answered 9/12, 2013 at 22:43 Comment(0)
H
18

You could do something like

a = tuple(int(x) for x in a.split(","))
Homosexual answered 9/12, 2013 at 22:46 Comment(0)
L
10

You could interpret the input as Python literals with ast.literal_eval():

import ast

a = ast.literal_eval(input('some text: '))

This function will accept any input that look like Python literals, such as integers, lists, dictionaries and strings:

>>> ast.literal_eval('1,1')
(1, 1)
Logan answered 9/12, 2013 at 22:45 Comment(3)
I used this function in one of my programs to take tuple input as well, so I wrapped it with the tuple() function and put it all in a try/except case to prevent things like functions being entered as input and insure that only tuples were enteredScrofulous
@samrap: ast.literal_eval() doesn't support entering functions. Only literals are supported; strings, booleans, numbers, lists, tuples, dictionaries and None. That's it.Logan
@samrap: You can always use a more explicit method (like jonrsharpe posted) or use isinstance(result, tuple) to ensure that only tuples are being entered.Logan
D
1

It can be done in the following way.

a = '3, 5, 7, 23'

out = tuple(map(int, a.split(",")))

print(out)

(3, 5, 7, 23)
Diggings answered 18/5, 2022 at 16:52 Comment(0)
A
-2

It's very simple.

 tup = tuple(input("enter tuple"))
 print(tup)    

This will work.

Airdrome answered 2/7, 2019 at 1:45 Comment(1)
It will not really work. The input is a string, and passing that to tuple() will create a tuple from the string's characters. So for example, for the OP's input of 1,1, your code will output ('1', ',', '1')Ulrikaumeko
J
-2
>>> a = input()
(21, 51, 65, 45, 48, 36, 8)
>>> m = eval(a)
>>> type(m)
<class 'tuple'>
Johnnyjohnnycake answered 30/8, 2021 at 11:5 Comment(2)
Eval has its own drawbackTeodoor
This is not a good option: please review Using python's eval() vs. ast.literal_eval()?. ast.literal_eval is already posted as an answer here.Carangid

© 2022 - 2024 — McMap. All rights reserved.