我一直在为自己所学的课程做一些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")
我只是希望它不会循环,我认为其他一切都很酷。 我还想实现一个选项,该选项可以向我显示我正在执行的每个查询,例如将它们全部收集在一起,但是我认为那是创建循环的原因,所以我删除了它。
答案 0 :(得分:0)
似乎只要用户输入有效命令,您就想继续循环。您可以通过在循环内移动input
行,然后在break
条件中添加else
语句来完成此操作。
例如:
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
答案 1 :(得分:0)
我知道,也许您可以给一些变量boolean并使该变量成为停止该循环的阈值循环,例如:
threshold = True
while threshold:
if something:
threshold = False
答案 2 :(得分:0)
eleccion的值在while循环内没有改变,请在while语句后移动输入语句,然后重试。