J'ai essayé d'utiliser raw_input()
pour obtenir une liste de nombres, mais avec le code
numbers = raw_input()
print len(numbers)
l'entrée [1,2,3]
donne un résultat de 7
, je suppose donc qu'elle interprète l'entrée comme s'il s'agissait d'une chaîne. Existe-t-il un moyen direct d’en faire une liste? Peut-être que je pourrais utiliser re.findall
pour extraire les entiers, mais si possible, je préférerais utiliser une solution plus Pythonic.
Dans Python 3.x, utilisez ceci.
a = [int(x) for x in input().split()]
>>> a = [int(x) for x in input().split()]
3 4 5
>>> a
[3, 4, 5]
>>>
Il est beaucoup plus facile d'analyser une liste de nombres séparés par des espaces plutôt que d'essayer d'analyser la syntaxe Python:
Python 3:
s = input()
numbers = list(map(int, s.split()))
Python 2:
s = raw_input()
numbers = map(int, s.split())
eval(a_string)
évalue une chaîne en tant que code Python. Évidemment ce n'est pas particulièrement sûr. Vous pouvez obtenir une évaluation plus sûre (plus restreinte) en utilisant la fonction literal_eval
du module ast
.
raw_input()
est appelé ainsi dans Python 2.x car il obtient une entrée brute et non "interprétée". input()
interprète l'entrée, c'est-à-dire est équivalent à eval(raw_input())
.
Dans Python 3.x, input()
fait ce que raw_input()
faisait, et vous devez évaluer le contenu manuellement si c'est ce que vous voulez (c'est-à-dire eval(input())
).
Vous pouvez utiliser .split()
numbers = raw_input().split(",")
print len(numbers)
Cela vous donnera toujours des chaînes, mais ce sera une liste de chaînes.
Si vous avez besoin de les mapper à un type, utilisez la liste de compréhension:
numbers = [int(n, 10) for n in raw_input().split(",")]
print len(numbers)
Si vous voulez pouvoir entrer n'importe quel type Python et le faire mapper automatiquement et vous faites confiance à vos utilisateurs IMPLICITEMENT, vous pouvez alors utiliser eval
Une autre façon pourrait être d'utiliser la boucle for pour celle-ci. Supposons que vous souhaitiez que l'utilisateur entre 10 chiffres dans une liste nommée "mémo"
memo=[]
for i in range (10):
x=int(input("enter no. \n"))
memo.insert(i,x)
i+=1
print(memo)
num = int(input('Size of elements : '))
arr = list()
for i in range(num) :
ele = int(input())
arr.append(ele)
print(arr)
a=[]
b=int(input())
for i in range(b):
c=int(input())
a.append(c)
Les extraits de code ci-dessus constituent une méthode simple pour obtenir des valeurs de l'utilisateur.
vous pouvez passer une représentation sous forme de chaîne de la liste à json:
import json
str_list = raw_input("Enter in a list: ")
my_list = json.loads(str_list)
l’utilisateur entre dans la liste comme vous le feriez en python: [2, 34, 5.6, 90]
La réponse est triviale. essaye ça.
x=input()
Supposons que [1,3,5,'aA','8as']
soit donné en tant qu'entrées
print len(x)
cela donne une réponse de 5
print x[3]
cela donne 'aA'
Je pense que cela va faire le travail:
val = map(int, input().split()) print(list(val))
Obtenir une liste de numéro en entrée de l'utilisateur.
Cela peut être fait en utilisant list en python.
L=list(map(int,input(),split()))
Ici L indique une liste, map est utilisé pour mapper une entrée avec la position, int spécifie le type de données de l'entrée utilisateur qui est un type de données entier, et split () est utilisé pour diviser le nombre en fonction de l'espace.
.
Dans Python 3:
input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")]
Il demandera à "entrer dans la liste", il suffit donc d'entrer dans la liste comme [2,4,5]
(common_py3) PS E:\virtual_env_all\common_py3\Scripts> python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")]
enter list:[2,4,5]
>>> input_list
[2, 4, 5]
>>> type(input_list)
<class 'list'>
>>>
essaye celui-là ,
n=int(raw_input("Enter length of the list"))
l1=[]
for i in range(n):
a=raw_input()
if(a.isdigit()):
l1.insert(i,float(a)) #statement1
else:
l1.insert(i,a) #statement2
Si l'élément de la liste est juste un nombre, l'instruction 1 sera exécutée et s'il s'agit d'une chaîne, l'instruction 2 sera exécutée. À la fin, vous aurez une liste l1 selon vos besoins.
Vous pouvez utiliser cette fonction (avec le type int uniquement);)
def raw_inputList(yourComment):
listSTR=raw_input(yourComment)
listSTR =listSTR[1:len(listSTR)-1]
listT = listSTR.split(",")
listEnd=[]
for caseListT in listT:
listEnd.append(int(caseListT))
return listEnd
Cette fonction retourne votre liste (avec le type int)!
Exemple :
yourList=raw_inputList("Enter Your List please :")
Si vous entrez
"[1,2,3]"
ensuite
yourList=[1,2,3]