Python >> Tutoriel Python >  >> Python

Python One Line While Loop [Tutoriel simple]

Python est puissant - vous pouvez condenser de nombreux algorithmes en une seule ligne de code Python. Alors la question naturelle se pose :pouvez-vous écrire une boucle while dans une seule ligne de code ? Cet article explore en détail cette question essentielle à la mission.

Comment écrire une boucle While dans une seule ligne de code Python ?

Il existe trois manières d'écrire une boucle while d'une seule ligne :

  • Méthode 1 :Si le corps de la boucle se compose d'une instruction, écrivez cette instruction dans la même ligne :while True: print('hi') . Cela imprime la chaîne 'hi' au shell tant que vous n'interférez pas ou que votre système d'exploitation met fin à l'exécution de force.
  • Méthode 2 : Si le corps de la boucle se compose de plusieurs instructions, utilisez le point-virgule pour les séparer :while True: print('hi'), print('bye') . Cela exécute les instructions les unes après les autres dans la boucle while.
  • Méthode 3  :Si le corps de la boucle est constitué d'instructions composées imbriquées, remplacez les structures composées internes par l'opérateur ternaire :while True: print('hi') if condition else print('bye' ).

Exercice :Exécutez le code. Qu'observez-vous ? Essayez de réparer la boucle infinie !

Ensuite, vous plongerez profondément dans chacune de ces méthodes et deviendrez un meilleur codeur dans le processus.

Avant de continuer, je suis ravi de vous présenter mon tout nouveau livre Python Python One-Liners (Lien Amazon).

Le livre est publié en 2020 avec l'éditeur de livres de programmation de classe mondiale NoStarch Press (San Francisco).

Mais assez de promo, passons à la première méthode, le profane…

Méthode 1 :Déclaration unique While Loop One-Liner

Le simple fait d'écrire la boucle while dans une seule ligne de code est le moyen le plus direct d'accomplir la tâche. Supposons que vous souhaitiez écrire la boucle while infinie suivante dans une seule ligne de code :

while True:
    print('hi')
'''
hi
hi
...
'''

Vous pouvez facilement y parvenir en écrivant la commande dans une seule ligne de code :

# Method 1: Single-Line While Loop
while True: print('hi')

Bien que cette réponse semble simple, la question intéressante est :pouvons-nous écrire une boucle while plus complexe qui a un corps de boucle plus long sur une seule ligne ?

Article connexe : Si vous souhaitez compresser des algorithmes entiers en une seule ligne de code, consultez cet article avec 10 lignes Python qui tiennent dans un seul tweet.

Explorons une astuce Python alternative très populaire parmi les maîtres Python :

Méthode 2 :plusieurs instructions While Loop One-Liner

Il s'avère que vous pouvez également utiliser le point-virgule pour séparer plusieurs déclarations indépendantes et les exprimer sur une seule ligne. L'instruction expression1; expression2 lit "d'abord exécuter expression1 , puis exécutez expression2 " .

Voici un exemple d'exécution d'une boucle while jusqu'à une variable de compteur c atteint le seuil c == 10 :

c = 0
while c < 10: print(c); c = c + 1
'''
0
1
2
3
4
5
6
7
8
9
'''

De cette façon, vous pouvez facilement compresser des corps de boucle "plats" en une seule ligne de code Python.

Mais que se passe-t-il si le corps de la boucle n'est pas plat mais imbriqué de manière hiérarchique ? Comment exprimer ces boucles while imbriquées sur une seule ligne ?

Méthode 3 : Instructions composées imbriquées en boucle sur une ligne

Vous souhaitez souvent utiliser des instructions composées en Python qui sont des instructions qui nécessitent un bloc indenté, telles que des instructions if ou des boucles while.

Dans les méthodes précédentes, vous avez vu des lignes simples en boucle while avec une instruction de corps de boucle, ainsi que plusieurs instructions de corps de boucle séparées par des points-virgules.

Problème  :Mais que se passe-t-il si vous souhaitez utiliser une instruction composée dans une simple boucle while, dans une seule ligne de code ?

Exemple  :L'instruction suivante fonctionne très bien :

# YES:
if expression: print('hi')

Vous pouvez également ajouter plusieurs déclarations comme celle-ci :

# YES:
if expression: print('hi'); print('ho')

Mais vous ne pouvez pas utiliser d'instructions composées imbriquées dans une boucle while à une ligne :

# NO:
while expression1: if expression2: print('hi')

Python renvoie une erreur pas fonctionnent parce que le while et if les instructions sont composées.

Cependant, il existe une solution simple pour que cela fonctionne. Vous pouvez remplacer le if expression2: print('hi') partie avec un opérateur ternaire et utilisez une expression plutôt qu'une instruction composée :

# Method 3: One-Line While Loop + Ternary Operator
while True: print('yes') if True else print('no')

Vous pouvez également utiliser des opérateurs ternaires imbriqués pour tenir compte des blocs if éventuellement imbriqués :

Vidéo connexe :Boucle for à une ligne

Vous pouvez en savoir plus sur la boucle for à une seule ligne dans mon article détaillé ici.

Où aller à partir d'ici

Connaître de petites astuces Python à une ligne telles que la compréhension de la liste et les boucles for à une seule ligne est essentiel pour votre succès dans le langage Python. Tous les codeurs experts les connaissent par cœur. Après tout, c'est ce qui les rend très productifs.

Si vous voulez apprendre le langage Python par cœur, rejoignez mon cours Python gratuit par e-mail. Il est basé à 100% sur des feuilles de triche Python gratuites et des leçons Python. C'est amusant, facile et vous pouvez partir à tout moment.

Humour de programmeur

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!