我有一个循环,我不能在python上结束

2024-10-01 22:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一门课程中做了一些Python的代码,我遇到了一个无法结束的循环问题。我不知道它是从哪里来的。你知道吗

我试着把每一个“elif”都打断一下,但那不是我想要的,因为我不想它就在“else”之后结束。不过,我不介意其他的选择。你知道吗

我也试过使用“return”,但也许我做错了什么,因为我不能让它工作

from lxml import etree

doc = etree.parse('Paises_XML.xml')
raiz=doc.getroot()
paises=doc.findall("pais")

print("DATOS SOBRE HABITANTES EN CADA PAIS")
print("""
    1- España
    2- Irán
    3- Alemania
    4- EEUU
    5- Libano
    6- Madagascar
    7- Salir
    """)

eleccion=input("Introduzca un número referente a un país de la lista observable: ")

while True:

    if eleccion== "1":
        print("")
        print (paises[0].find("nombre").text)
        print (paises[0].find("habitantes").text)

    elif eleccion== "2":
        print("")
        print (paises[1].find("nombre").text)
        print (paises[1].find("habitantes").text)

    elif eleccion== "3":
        print("")
        print (paises[2].find("nombre").text)
        print (paises[2].find("habitantes").text)

    elif eleccion== "4":
        print("")
        print (paises[3].find("nombre").text)
        print (paises[3].find("habitantes").text)

    elif eleccion== "5":
        print("")
        print (paises[4].find("nombre").text)
        print (paises[4].find("habitantes").text)

    elif eleccion== "6":
        print("")
        print (paises[5].find("nombre").text)
        print (paises[5].find("habitantes").text)


    elif eleccion== "7":
        print("")
        print("¡Hasta pronto!")
        break
    else:
        print ("Opción no válida, elija un número del 1 al 6 para mostrar la información del país correspondiente")

我只是希望它不会做一个循环,我觉得其他的都很酷。 我还想实现一个选项,它可以显示我正在执行的每个查询,比如将它们全部收集到一个查询中,但我认为这就是创建循环的原因,所以我删除了它。你知道吗


Tags: textdocfindelselaunetreeprint
3条回答

我明白了,也许你可以给一些变量布尔值,并使该变量成为threhold循环,以停止该循环,例如:

threshold = True 
while threshold: 
    if something:
    threshold = False

似乎只要用户输入一个有效的命令,您就想继续循环。您可以通过在循环中移动input行,然后向else条件添加break语句来实现这一点。你知道吗

例如:

while True:
    eleccion=input("Introduzca un número referente a un país de la lista observable: ")

    if eleccion == "1":
        # handle
    # ...
    else:
        print("Opción no válida, elija un número del 1 al 6 para mostrar la información del país correspondiente")
        break

另外,很多代码看起来都可以压缩,因为除了所使用的索引之外,每种情况看起来几乎相同,但是可以从输入的命令派生出来。你知道吗

例如,我们可以:

valid_choices = ["1", "2", "3", "4", "5", "6"]

while True:
    eleccion=input("Introduzca un número referente a un país de la lista observable: ")

    if eleccion in valid_choices:
        index = int(eleccion) - 1
        print("")
        print (paises[index].find("nombre").text)
        print (paises[index].find("habitantes").text)
    elif eleccion == "7":
        print("")
        print("¡Hasta pronto!")
        break
    else:
        print("Opción no válida, elija un número del 1 al 6 para mostrar la información del país correspondiente")
        break

您的while循环中eleccion的值没有更改,请将您的输入语句移到while语句之后,然后重试。你知道吗

相关问题 更多 >

    热门问题