2017-08-29 2 views
1

J'essaie de faire un tri simple bulle, et l'instruction if que j'utilise pour trier les nombres dans mon tableau ne fonctionne pas. Quelqu'un peut-il m'aider à faire fonctionner ça?Lors de l'exécution de ma fonction, mon instruction if ne s'exécute pas

Voici mon code:

def Bubble(a): 
    Flag = False 
    while not Flag: 
     Flag = True 
     for i in range(0, len(a), -1): 
      if a[i] > a[i+1]: #this if statement isn't running 
       a[i], a[i + 1] = a[i + 1], a[i] 
       print("hi") 
       Flag = False 



def main(): 
    a = GRN(10) 
    acopy = a[:] 
    Bubble(a) 
    acopy.sort() 
    print(a==acopy) 
    print(a) 
    print(acopy) 


main() 
+3

Pourquoi pensez-vous qu'il ne fonctionne pas? –

+0

J'ai imbriqué l'instruction d'impression à l'intérieur de l'instruction if et elle n'imprime pas – Mychsmit

+1

en plaçant une instruction d'impression à l'intérieur du si cela prouve seulement si la condition est vraie, pas si cette ligne de code est en cours d'exécution ou non. –

Répondre

3

range(0, len(a), -1) est toujours une liste vide, car l'étape est négative. Ce n'est pas la déclaration if à blâmer, mais la boucle for. Ce dont vous avez besoin est range(len(a)-1).

+0

lorsque j'enlève le -1 Mon index de liste est hors plage – Mychsmit

+0

Vérifiez la réponse mise à jour. – DyZ

+0

Parfait merci! Je vais upvote dès que les dix minutes sont écoulées. – Mychsmit