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
5 Réponses :
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
juste envelopper tout dans un 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; p> ou ajoutez un tandis que TRUE code>, pensez également à utiliser
elif code> 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 code> à l'aide d'un tableau.
ele code> à la fin et retirez la boucle interne p>
La boucle interne pendant code> peut être remplacée par une clause
ele code> sur le
si code> instruction.
@cheppner Yep, c'est l'une des autres solutions possibles;)
Vous pouvez améliorer ce code, mais aussi loin que la question se passe, enveloppez simplement votre boucle initiale dans une autre boucle.
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
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>
choix code> est livré dans cet exemple. Li>
- 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))
sys.exit code> est une fonction; Appelez-le comme
sys.exit (0) code> pour indiquer la réussite d'achèvement ou
sys.exit (1) code> pour indiquer l'achèvement de l'échec due à une erreur.
Enveloppez-le dans une boucle.