J'essaie de prendre des commentaires de l'utilisateur quelque chose comme ceci: Comment puis-je le faire par méthode de saisie? P> Voici mon code mais dans lequel tout est dans type de chaîne. p> sortie: - p> Entrez votre liste: - 1,2, 3 4 5
['1,2,3', '4', '5']
classe 'str'
Classe 'str' p> p>
5 Réponses :
Pour les entrées contenant des chiffres ou des listes, il tombe sur le programme de vérifier et de modifier la chaîne entrée par l'utilisateur pour obtenir le résultat souhaité.
pour une entrée fournie comme suit: 1,2,3 4 5 code> Comme indiqué dans l'exemple, vous pouvez modifier la chaîne et convertir en Int le long des lignes suivantes à l'aide des comprimés ou des cartes de liste. P>
in_list = input("Enter your list :- ").split()
print(in_list)
in_list[0] = [int(s) for s in in_list[0].split(',')] #split on comma, typecast to int, reassign to 0th index
in_list[1:] = [int(s) for s in in_list[1:]] #typecast remaining values to int
#Alternate syntax using map
#in_list[0] = list(map(int,in_list[0].split(',')))
#in_list[1:] = list(map(int, in_list[1:]))
print(in_list)
#Output:
[[1, 2, 3], 4, 5]
Vous pouvez utiliser eval code>:
Un peu plus longtemps, mais c'est une autre option.
my_string code> est l'entrée de l'utilisateur, la méthode fonctionne également pour ce type d'entrée: P>
my_str = '1,2,3 4 5 7,8,9 10 11'
res = [ e.split(',') for e in my_str.split(' ') ]
for i, e in enumerate(res):
if len(e) == 1:
res[i] = int(e[0])
else:
res[i] = [ int(ee) for ee in e ]
print(res)
#=> [[1, 2, 3], 4, 5, [7, 8, 9], 10, 11]
Utiliser sortie: p> à partir du Ceci peut être utilisé pour évaluer en toute sécurité les chaînes contenant des valeurs de python provenant de sources non carteuses sans avoir besoin d'analyser les valeurs soi-même. Il n'est pas capable d'évaluer des expressions arbitrairement complexes, par exemple impliquant des opérateurs ou une indexation. P>
blockQuote> p> ast.literal_eval () code> (comme commenté Daniel Mesejo):
ast.literal_eval () code>, un autre utilisateur a suggéré d'utiliser
eval () code>, qui fonctionne également. Pour une discussion sur la raison pour laquelle il est plus sûr d'utiliser
ast.literal_eval () code>, reportez-vous à cette question connexe: Utilisation de l'EVAL () VST.LITERAL_EVAL de Python ()? . P>
AST code> Documentation: P >
my_list=[] temp_list=[] n=int(input('Enter the size of list')) for i in range(n): #loop for number of sub-list in the list for j in range(0,2): #loop for number of elements in the sub-list temp_list.append(input()) my_list.append(temp_list) temp_list=[] # to empty the list for next iteration print(my_list)
Les entrées viennent toujours comme une chaîne. tycaire (aka convert) en intvestre ensuite. Par exemple,
int ('123') code>
Utiliser
in_list = ast.literal_eval (entrée ("Entrez votre liste: -") .Strip ()) code>
ressemble à la bande littérale_eval () par défaut.