好的,原谅我,这是我的第一个问题。此外,还是编程新手。
无论如何,我一直在编写一个维护杂货清单的程序。主要想法是您可以添加杂货,删除它们,更改它们,检查列表并退出程序。
我几乎所有的东西都在工作,但是,我的问题是,如果用户选择,例如,选项1,他们可以无限期地(按设计)这样做,但是当他们转到选项2时,程序将在他们尝试回到选项一(也可以类似于3回到2或1和4到更低的数字)。
主要计划是:
import moduloListas as mod
abarrotes=[]
frutas=[]
limpieza=[]
listaTotal=[abarrotes,frutas,limpieza]
opcion=mod.menu()
while opcion=='1':
listaTotal=mod.ingresar(listaTotal)
opcion=mod.menu()
while opcion=='2':
listaTotal=mod.eliminar(listaTotal)
opcion=mod.menu()
while opcion=='3':
listaTotal=mod.cambiar(listaTotal)
opcion=mod.menu()
while opcion=='4':
print "\nAbarrotes: ",listaTotal[0]
print "\nFrutas: ",listaTotal[1]
print "\nLimpieza: ",listaTotal[2]
opcion=mod.menu()
,菜单为:
def menu():
print "___....----Menu Principal----....___"
print "1. Ingresar un articulo"
print "2. Eliminar un articulo"
print "3. Cambiar un articulo"
print "4. Mostrar las listas de articulos"
print "5. Salir de Programa"
print "\n"
posibles=['1','2','3','4','5']
opcion=raw_input("Por favor hacer una seleccion: ")
while opcion not in posibles:
print "Por favor, solo ingresa 1,2,3,4 o 5"
opcion=raw_input("Por favor hacer una seleccion: ")
return opcion
答案 0 :(得分:1)
尝试将第一个代码块更改为以下内容:
import moduloListas as mod
abarrotes = []
frutas = []
limpieza = []
listaTotal = [abarrotes, frutas, limpieza]
opcion = mod.menu()
while opcion != '5':
if opcion == '1':
listaTotal = mod.ingresar(listaTotal)
elif opcion == '2':
listaTotal = mod.eliminar(listaTotal)
elif opcion == '3':
listaTotal = mod.cambiar(listaTotal)
elif opcion == '4':
print "\nAbarrotes: ", listaTotal[0]
print "\nFrutas: ", listaTotal[1]
print "\nLimpieza: ", listaTotal[2]
opcion = mod.menu()
答案 1 :(得分:1)
这可以通过将while
循环更改为。
while True:
opcion=mod.menu()
if opcion=='1':
listaTotal=mod.ingresar(listaTotal)
elif opcion=='2':
listaTotal=mod.eliminar(listaTotal)
elif opcion=='3':
listaTotal=mod.cambiar(listaTotal)
elif opcion=='4':
print "\nAbarrotes: ",listaTotal[0]
print "\nFrutas: ",listaTotal[1]
print "\nLimpieza: ",listaTotal[2]
else:
break
答案 2 :(得分:0)
DO
while True:
if opcion == '1':
...
if opcion=='4':
....
opcion = input()
然后当然,必须有一些退出选项......'5'或其他什么。
答案 3 :(得分:0)
代码流的方式意味着一旦移动到低于1的数字,就无法向上移动程序流。尝试再次更改变量opcion
意味着将真值语句评估为false,从而打破while循环。
您的代码:
while opcion=='2':
listaTotal=mod.eliminar(listaTotal)
opcion=mod.menu()
因此,更改opcion
会中断该循环并移至代码的下一部分(向下),这意味着在向下移动数字但不向上移动时似乎有效。
相反,您应该使用包含if
和elif
语句的单个while循环。
while True:
opcion = mod.menu()
if "1" in opcion:
listaTotal=mod.ingresar(listaTotal)
...
依此类推,就像在Sukrit Kalra的回答中一样(我只是想澄清为什么会这样)。