CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Pourquoi while ne fonctionne pas ?

Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:15:26
u=0
while u != 1 or 2:
    u=input('Alors ?:')

Ça fait une boucle infini et j'ai beau écrire 1 ou 2 ça ne marche pas.
Je suis à la version 3.7.

Message édité le 25 juillet 2019 à 21:17:36 par Pseudo supprimé
Incido
Incido
Niveau 8
25 juillet 2019 à 21:25:35

J'y connais rien en python mais d'instinct je dirais u ! = 1 or u != 2
Y'a sûrement une manière plus sexy de l'écrire.

Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:29:33

Le 25 juillet 2019 à 21:25:35 Incido a écrit :
J'y connais rien en python mais d'instinct je dirais u ! = 1 or u != 2
Y'a sûrement une manière plus sexy de l'écrire.

Je vais essayer

Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:32:51

Ça ne marche toujours pas :(
Mais merci quand même.

Incido
Incido
Niveau 8
25 juillet 2019 à 21:40:26

Ah mais. C'est pas or, c'est and. Ta condition ne te permet pas de sortir de la boucle, elle correspond à un while True or False.

Ma première suggestion était bidon, si c'était un problème de syntaxe ça aurait pété à l'interpréteur.

Message édité le 25 juillet 2019 à 21:42:02 par Incido
Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:43:59

Le 25 juillet 2019 à 21:40:26 Incido a écrit :
Ah mais. C'est pas or, c'est and. Ta condition ne te permet pas de sortir de la boucle, elle correspond à un while True or False.

Ma première suggestion était bidon, si c'était un problème de syntaxe ça aurait pété à l'interpréteur.

Non or est juste et de toute façon and fait pareil il n'y a rien qui change.

Message édité le 25 juillet 2019 à 21:45:32 par Pseudo supprimé
Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:44:39

Or c'est soit l'un ou soit l'autre
And c'est les 2

Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 21:47:56

:up:

Specto
Specto
Niveau 7
25 juillet 2019 à 21:53:18
u=0
while u != 1 and u != 2:
    u=int(input('Alors ?:'))
    

https://image.noelshack.com/fichiers/2019/30/4/1564084269-8205-noelpush.png En choisissant un and et en ajoutant un int() on sort de la boucle si on saisit 1 ou 2.

https://image.noelshack.com/fichiers/2019/30/4/1564084312-8582-noelpush.png En choisissant un or, la boucle reste infinie.

Le problème du int(), c'est que le programme crash si on écrit autre chose qu'un chiffre. Faudrait ajouter une protection supplémentaire mais c'est pas de mon ressort, je laisse ça aux experts et je retourne me tapir dans l'ombre.

Message édité le 25 juillet 2019 à 21:53:55 par Specto
Pseudo supprimé
Pseudo supprimé 25 juillet 2019 à 22:01:19

Merci :ok:

[Black_Spirit]
[Black_Spirit]
Niveau 19
25 juillet 2019 à 22:41:39

Premier point :
u=0 while u != 1 or 2: u=input('Alors ?:')

En python (comme en C) "0" est faux et "différent de 0" est vrai. Du coup ce while est équivalent à
u=0 while u != 1 or True: u=input('Alors ?:')

Ce qui est toujours vrai, d'où la boucle infinie.

Deuxième point :
Si t'as un doute sur la condition du While, exprime ta condition de sortie et prends le contraire.
Par exemple, si ta condition de sortie c'est "u == 1 OU u == 2", la condition du while sera "u != 1 ET u != 2".

Message édité le 25 juillet 2019 à 22:42:54 par [Black_Spirit]
Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment