python - 我有一个循环,我无法在 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")
我只是希望它不会循环,我认为其他一切都很酷。我还想实现一个选项,它可以显示我正在执行的每个查询,比如将它们全部收集在一起,但我认为这就是创建循环的原因,所以我删除了它。
解决方案
只要用户输入有效命令,您似乎就想继续循环。您可以通过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
推荐阅读
- c# - 如何将一个测试方法的变量传递给 C# 中的另一个测试方法?
- c# - Aspnet 核心并行请求最大同时连接数
- r - 关于像变量一样的数组的 typeof()
- python - 试图更改“窗口”顶部的 tkinter Tk() 中的默认图标
- flutter - VSCode 无法自动导入 flutter_gen
- python - 禁用蓝牙缓存。但是应用程序仍然得到错误的数据?
- javascript - Mapbox:从 GeoTiff 上传瓦片并将瓦片添加为栅格
- php - 致命错误:未捕获的类型错误:mysqli_fetch_assoc()
- javascript - 如何防止汉堡菜单侧边栏溢出大小?
- android - 如何访问设备的手电筒?