0
votes

Comment puis-je obtenir ce programme pour boucler indéfiniment jusqu'à ce que l'entier spécifique 4 soit entré?

Ceci est une fonction d'un programme de python plus gros. Comment puis-je l'obtenir en boucle de manière continue jusqu'à ce que "4" soit entré? Toute aide est grandement appréciée.

print("\nEnter a number (1) - (4). (4) terminates the program.")
choice = int(input("Enter your choice: "))

while((choice != 1) and (choice != 2) and (choice != 3) and (choice != 4)):
        choice = int(input("\nInvalid option. Enter a number from the menu: "))

if(choice == 1):
        f = open("dna1.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal:   {0}" .format(contents))

if(choice == 2):
        f = open("dna2.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal: {0}" .format(contents))

if(choice == 3):
        f = open("dna3.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal: {0}" .format(contents))

if(choice == 4):
        print("Exiting program.")
        sys.exit


2 commentaires

sys.exit est une fonction; Appelez-le comme sys.exit (0) pour indiquer la réussite d'achèvement ou sys.exit (1) pour indiquer l'achèvement de l'échec due à une erreur.


Enveloppez-le dans une boucle.


5 Réponses :


0
votes

Avez-vous essayé d'utiliser Continuer et de casser la déclaration, je veux dire au lieu de dire de la condition dans la boucle tandis que vous pourriez dire

while(True):
      if(condition met):
           break
      elif(condition):
           continue


0 commentaires

1
votes

juste envelopper tout dans un tandis que TRUE , pensez également à utiliser elif comme votre choix sera l'un des effectifs afin de ne pas vérifier le prochain résultat , et vous pouvez simplifier le tandis que / choix à l'aide d'un tableau.

Je vous suggère également de votre refacteur pour éviter le code en double (si vous le pouvez) pour la pièce qui vérifie le mode de contrôle, le fichier de lecture, enregistrer contenu, contenu d'impression; xxx

ou ajoutez un ele à la fin et retirez la boucle interne xxx


2 commentaires

La boucle interne pendant peut être remplacée par une clause ele sur le si instruction.


@cheppner Yep, c'est l'une des autres solutions possibles;)



0
votes

Vous pouvez améliorer ce code, mais aussi loin que la question se passe, enveloppez simplement votre boucle initiale dans une autre boucle. xxx


0 commentaires

0
votes

Ce problème peut être résolu avec une indentation de base dans Python 3, mais vous pouvez également modifier cela comme:

# continues loop until specific key is pressed
    
choice=int(input("\nEnter a number (1) - (4). (4) terminates the program."))
    
while choice <= 4 :
    choice=int(input("\nInvalid option. Enter a number from the menu: "))

    if choice == 1 :
        f = open("dna1.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal:   {0}" .format(contents))

    elif choice == 2 :
        f = open("dna2.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal: {0}" .format(contents))

    elif choice == 3 :
        f = open("dna3.txt", "r")
        if f.mode == "r":
            contents = f.read()
            print("\nOriginal: {0}" .format(contents))

    else :
        print("Exiting program.")
        sys.exit


0 commentaires

0
votes

Votre question a déjà été répondue par d'autres personnes.

Cependant, je voulais prendre une minute pour vous montrer quelques possibilités d'améliorer votre style de codage. J'ai réécrit votre programme et j'ai fait des notes sur la manière dont ces changements peuvent rendre votre vie plus facile en tant que développeur. P>

  1. set constantes pour vous permettre de manipuler des données sur une seule ligne au lieu de plusieurs endroits. strong> - Je l'ai fait en utilisant une variable code> Options CODE> pour imprimer les options à la Utilisateur et em> pour déterminer quoi faire avec chaque option. Li>
  2. Faites de vos boucles aussi petites que possible pour augmenter la lisibilité. strong> - Dans cet exemple, j'ai déplacé toute la logique qui traite un choix sur une fonction. Maintenant, tout lecteur peut dire que tout ce que je fais dans cette boucle est (1) Inviter l'utilisateur, puis (2) traiter le choix. Li>
  3. Coller des variables dans des chaînes strong> - S'il n'y a qu'une faible variation d'une chaîne qui se répète, apportez la variation dans une variable et déposez-la dans la chaîne. Cela accélérera votre codage et em> rendre votre code plus lisible. C'est là que choix code> est livré dans cet exemple. Li>
  4. Utilisez Fstrings forts> - ce n'est pas un doit em>, mais c'est une continuation du point précédent. De plus, c'est un bon moyen d'optimiser votre code et de faire une analyse / la concaténation plus lisible. Li> ol>

    J'espère que cela vous est utile que vous apprenez Python! Codage heureux! P>

    options = list(range(1, 5))
    finished = False
    
    def process_choice(choice):
        if choice not in options:
            print("Invalid option.\n")
            return False
    
        if(choice == 4):
            print("Exiting program.")
            return True
    
        with open(f"dna{choice}.txt", "r") as file:
            contents = file.read()
            print(f"\nOriginal: {contents}")
        return True
    
    
    print(f"\nEnter a number {options}. (4) terminates the program.\n")
    
    while not finished:
        choice = input("Enter a number from the menu: ")
        finished = process_choice(int(choice))
    


0 commentaires