Je reçois cette erreur sur Python 3, TypeError: Pas tous les arguments convertis lors de la mise en forme de chaîne CODE>, je sais que cela est dû à la chaîne commençant par "
[ code>" mais Le problème que je résolvant a ceci comme la chaîne d'entrée '
[1, 2, 3, 4, 5, 6, 7, 8, 9] code>' et la tâche consiste à trouver les nombres pairs sur Python 3. Toute aide serait très appréciée.
y = "[[1,2,3,4],[4,5,6,7]]"
result = [[0,0],
[0,0],
[0,0],
[0,0]]
#iterate through rows
for i in range(len(X)):
# iterate through columns
for j in range(len(X[0])):
result[j][i] = X[i][j]
for r in result:
print(r)
IndexError: list index out of range ` I am getting this same type of problem again, the matrix has been input as a STRING.
4 Réponses :
Vous transmettez vos arguments en tant que chaînes:
[2, 4, 6, 8]
Je ne peux pas faire cela, l'entrée doit être comme celle-ci '[1, 2, 3, 4, 5, 6, 7, 8, 9]'
Vous n'abandonnez pas une liste à votre fonction, mais une chaîne Ce n'est probablement pas ce que vous voulez. p> Utilisez à la place: P> '[' code> alors
'1' code>, puis
',' code> " etc.
print(is_even_num([1, 2, 3, 4, 5, 6, 7, 8, 9]))
Mais la question a la chaîne comme entrée, ne peut pas changer cela! Je prends en fait l'entrée de l'utilisateur!
Vous devez transformer cela dans une liste d'entiers. L'utilisation peut utiliser Eval () qui est dangereuse, ou vous pouvez analyser cette chaîne. Utilisez des méthodes de chaîne telles que la bande () pour éliminer les espaces indésirables, vérifier que les premier et les derniers caractères sont «['et']» et supprimez-les, utilisez la méthode Split pour fragmenter les virgules et convertir les sous-chaînes en INTS. Devrait être assez facile.
Supprimer sortie: p> [ code> et
] code> et divisez la chaîne:
[1, 4]
[2, 5]
[3, 6]
[4, 7]
Merci beaucoup à nouveau @codepope j'ai mis à jour ma question avec deux autres problèmes que je suis confronté en raison des chaînes étant passées en entrée! L'entrée ne peut pas être modifiée et elle doit être fournie au code comme chaînes
Vous ne pouvez pas utiliser l'opérateur "%" avec des chaînes. Supprimez ces caractères de votre chaîne qui ne peuvent pas être converties en int ou float.
def is_even_num(l): l = l.replace('[','').replace(']','').split(",") return [x for x in l if int(x)%2 ==0] print(is_even_num('[1, 2, 3, 4, 5, 6, 7, 8, 9]'))
Parce que vous passez une chaîne ... pas une liste ... Votre fonction tel qu'il est nécessaire de répondre à une liste de chiffres, pas une chaîne qui est la représentation imprimée d'une liste ...