Maison  >  Article  >  développement back-end  >  Comment puis-je simuler des boucles Do-While et gérer des itérateurs en Python ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 19:03:03980parcourir

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

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

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)

É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

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!

Déclaration:
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