Comment puis-je simuler des boucles Do-While et gérer des itérateurs en Python ?

Patricia Arquette
Libérer: 2024-11-19 19:03:03
original
977 Les gens l'ont consulté

How Can I Simulate Do-While Loops and Handle Iterators in Python?

Émulation de boucles Do-While en Python

En Python, une boucle do-While n'est pas prise en charge nativement. Cependant, il existe plusieurs méthodes pour obtenir une fonctionnalité similaire.

Une approche consiste à utiliser une boucle while True, comme démontré ci-dessous :

while True:
  # Execute loop body
  if break_condition:
    break
Copier après la connexion

Vous pouvez également utiliser une boucle while suivie par une instruction if pour exécuter le corps de la boucle avant de vérifier la condition de rupture :

# Execute loop body
if not break_condition:
  continue
Copier après la connexion

Gestion de la StopIteration Exception

Pour gérer correctement l'exception StopIteration déclenchée lors d'une itération sur une liste ou un itérable, utilisez un bloc try-sauf :

iterator = list_of_ints.__iter__()
element = None

while True:
  try:
    element = iterator.next()
  except StopIteration:
    break

  print(element)
Copier après la connexion

Émulation d'une machine à états

Dans l'exemple fourni, une machine à états a été implémentée à l'aide d'une boucle do-while. Pour émuler cela en Python, vous pouvez utiliser des boucles avec des instructions de rupture conditionnelle :

while True:
  if state == STATE_CODE:
    if "//" in s:
      tokens.add(TOKEN_COMMENT, s.split( "//" )[1])
      state = STATE_COMMENT
    else:
      tokens.add(TOKEN_CODE, s)

  if state == STATE_COMMENT:
    if "//" in s:
      tokens.append(TOKEN_COMMENT, s.split( "//" )[1])
      state = STATE_CODE
    else:
      # Re-evaluate same line
      continue

  try:
    s = i.next()
  except StopIteration:
    break
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal