while true terminar for ejemplos dentro contador como ciclo bucle python while-loop infinite-loop

true - Python: caí en un ciclo infinito



if dentro de un for python (1)

El problema dice lo siguiente:

Example output: Calculator Give the first number: 100 Give the second number: 25 (1) + (2) - (3) * (4) / (5)Change numbers (6)Quit Current numbers: 100 25 Please select something (1-6): 5 Give the first number: 10 Give the second number: 30 (1) + (2) - (3) * (4) / (5)Change numbers (6)Quit Current numbers: 10 30 Please select something (1-6): 1 The result is: 40 (1) + (2) - (3) * (4) / (5)Change numbers (6)Quit Current numbers: 10 30 Please select something (1-6): 6 Thank you!

Y mi solución fue:

print("Calculator") var1 = input("Give the first number: ") var2 = input("Give the second number: ") print("(1) +/n(2) -/n(3) */n(4) //n(5)Change numbers/n(6)Quit") print("Current numbers: " + var1 + " " + var2) opcion = input("Please select something (1-6): ") while (opcion != "6"): if (opcion == "1"): var3 = int(var1) + int(var2) print("The result is: " + str(var3)) elif (opcion == "2"): var3 = int(var1) - int(var2) print("The result is: " + str(var3)) elif (opcion == "3"): var3 = int(var1) * int(var2) print("The result is: " + str(var3)) elif (opcion == "4"): var3 = int(var1) / int(var2) print("The result is: " + str(var3)) elif (opcion == "5"): var1 = input("Give the first number: ") var2 = input("Give the second number: ") opcion = input("Please select something (1-6): ") else: print("Selection was not correct.") print("Thank you!")

Pero en "elif (opcion ==" 5 "):" el corrector automático indica que caí en un ciclo infinito, intenté un descanso después de ingresar los dos nuevos números, pero sale completamente del ciclo while, cualquier idea ? Gracias.


Problema en tu código:

Solo obtienes opcion al principio y luego solo obtienes opcion cuando opcion es 5

lo que sucede cuando le das opcion = "1" es que agrega y te da la respuesta y luego verifica el enunciado while cuando es verdadero, luego vuelve a agregar y nuevamente revisa y goes oooooooooooon para que se produzca un ciclo infinito

Modificación:

print("Calculator") var1 = input("Give the first number: ") var2 = input("Give the second number: ") print("(1) +/n(2) -/n(3) */n(4) //n(5)Change numbers/n(6)Quit") print("Current numbers: " + var1 + " " + var2) while True: opcion = input("Please select something (1-6): ") if (opcion == "1"): var3 = int(var1) + int(var2) print("The result is: " + str(var3)) elif (opcion == "2"): var3 = int(var1) - int(var2) print("The result is: " + str(var3)) elif (opcion == "3"): var3 = int(var1) * int(var2) print("The result is: " + str(var3)) elif (opcion == "4"): var3 = int(var1) / int(var2) print("The result is: " + str(var3)) elif (opcion == "5"): var1 = input("Give the first number: ") var2 = input("Give the second number: ") elif (opcion == "6"): break else: print("Selection was not correct.") print("Thank you!")

Solución más mejorada:

import operator print("Calculator") var1 = input("Give the first number: ") var2 = input("Give the second number: ") print("(1) +/n(2) -/n(3) */n(4) //n(5)Change numbers/n(6)Quit") print("Current numbers: " + var1 + " " + var2) operations={"1":operator.add,"2":operator.sub,"3":operator.mul,"4":operator.div} while True: option = input("Please select something (1-6): ") print option if option in operations: var3=operations[option](int(var1),int(var2)) print "value"+str( var3) continue if (option == "6"): print "quiting" break elif (option == "5"): var1 = input("Give the first number: ") var2 = input("Give the second number: ") else: print("Selection was not correct.") print("Thank you!")

Nota :

debería ser options y no opcion en los términos correctos en inglés, pero realmente no importa: P