0
votes

Comment modifier simultanément des valeurs dans une liste?

L'utilisateur entrait 2 entiers différents, le programme recherchent ensuite les numéros dans la liste et remplace le premier numéro avec le deuxième numéro, affiche la nouvelle liste et ce processus continue.

Explication:

[0,1,2,3,4,5,6,7,8,9]

1ère entrée -> 2 de
2e entrée -> 3

nouvelle liste [0,1,3,3,4,5,6,7,8,9]

1er entrée -> 3 de
2e entrée -> 4

nouvelle liste2 [0,1,4,4,4,5,6,7,8,9]

ici est mon approche: xxx

Ceci modifie avec succès les 1ères valeurs, mais lorsque j'essaie d'entrer 3 et 4, le programme ne change que l'un des 3 dans la liste ci-dessous. est la sortie, la 1ère entrée d'itération> 2 et 3, 2e entrée d'entrée -> 3 et 4

sortie: xxx

Pourquoi le programme n'est-il pas Modification des valeurs en fonction de mes besoins dans les deuxième itérations (et à venir)?


4 commentaires

Est-ce que cela répond à votre question? Modifier les entiers dans une liste Python


@Balajiambreh Hey! Malheureusement, non, j'ai vu cette question avant de demander ici ... merci tho


Dans votre code, vous remplacez l'élément à la 3ème position, ne remplacez pas les 3s.


@bousof omg, j'ai eu mon erreur Haha merci beaucoup


4 Réponses :


3
votes

Lorsque vous dites pour i in b: , i prend successivement valeurs de liste B , pas indices . Lorsque vous trouvez une valeur i qui équivaut à une entrée a , vous dites ensuite: xxx

mais maintenant vous utilisez maintenant i < / Code> Comme si c'était l'index de la valeur que vous souhaitez modifier, mais ce n'est pas le cas. Ce que vous voulez faire est d'utiliser énumérer pour énumérer simultanément des indices et des valeurs de B : xxx

bien sûr, vous Devrait ajouter un test conditionnel à la boucle ci-dessus afin qu'il finisse par terminer. Peut-être: xxx


0 commentaires

1
votes

Vous allez ici:

b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
while True:
    a1 = int(input("Enter a nmuber:"))
    a2 = int(input("Enter a number:"))
    for i in range(len(b)):
        if b[i] == a1:
            b[i] = a2
    print(b)


0 commentaires

3
votes

Votre approche est gentille mais mon pote c'est faux. Vous pouvez simplement utiliser la fonction énumérer () Ce sera comme ceci: xxx


0 commentaires

1
votes

Je pense que nous pouvons tirer parti de dans code> et index () code> pour résoudre ce problème: xxx pré>

usage Strong> p>

% python3 test.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Enter a number: 2
Enter a number: 3
[0, 1, 3, 3, 4, 5, 6, 7, 8, 9]
Enter a number: 3
Enter a number: 4
[0, 1, 4, 4, 4, 5, 6, 7, 8, 9]
Enter a number: -1
% 


0 commentaires