python 3中的简单菜单

时间:2015-12-10 02:14:12

标签: python-3.x menu

我创建了一个两级菜单(请参阅下面的代码)并且无法正常工作。

我注意到我必须两次输入数字才能工作。并且第二级菜单不起作用

我想知道你是否可以提供帮助。

谢谢

def main():

choice =''
while choice !='0':
    choice = input ('Main choice: type: \nchoice 1: \nchoice 2: \nchoice 3: \nchoice 4:  \nchoice 5: \nchoice 6: ')
    print ('main menu 0')
    if choice =='1':
        print ('choice 1 - first level')
        choice = input ('Main choice: type: \nchoice 1: \nchoice 2:\nchoice 3 to go back:')
        if choice =='1':
            print ('choice 1:1 - end level menu')
            choice = input ('Main choice: type: \nchoice 1: \nchoice 2:\nchoice 3 to go back:')
        elif choice =='2':
            print ('choice 2:1 - end level menu')
            choice = input ('Main choice: type: \nchoice 1: \nchoice 2:\nchoice 3 to go back:')
        elif choice =='3':
            break
    elif choice =='2':
        print ('choice 2- first level')
        choice = input ('Main choice: type: \nchoice 1: \nchoice 2: \nchoice 3: \nchoice 4:  \nchoice 5: \nchoice 6: ')

    elif choice =='3':
        print ('choice 3- first level')
        choice = input ('Main choice: type: \nchoice 1: \nchoice 2: \nchoice 3: \nchoice 4:  \nchoice 5: \nchoice 6: ')

    elif choice =='4':
        print ('choice 4 - first level')
        choice = input ('Main choice: type: \nchoice 1: \nchoice 2: \nchoice 3: \nchoice 4:  \nchoice 5: \nchoice 6: ')

    elif choice =='5 - first level':
        print ('choice 5')
        joice = input ('Main choice: type: \nchoice 1: \nchoice 2: \nchoice 3: \nchoice 4:  \nchoice 5: \nchoice 6: ')

main()的

4 个答案:

答案 0 :(得分:1)

在使用你的代码之后,我能够进行一些更改,并希望它们会沉入其中。一旦定义了一个函数,就必须调用它。因此,定义main是不够的 - 您必须通过main()在代码中调用它。

对于选择5,您需要选择转到第二个菜单。所以我定义了另一个函数并将其命名为second_menu()。我打印了一些独特的东西,所以你可以知道你去了菜单。唯一的问题是循环中断,但如果你打算让用户留在循环中,这是可以修复的。看看新代码:

def main():

choice ='0'
while choice =='0':
    print("Main Choice: Choose 1 of 5 choices")
    print("Choose 1 for something")
    print("Choose 2 for something")
    print("Choose 3 for something")
    print("Choose 4 for something")
    print("Choose 5 to go to another menu")

    choice = input ("Please make a choice: ")

    if choice == "5":
        print("Go to another menu")
        second_menu()
    elif choice == "4":
        print("Do Something 4")
    elif choice == "3":
        print("Do Something 3")
    elif choice == "2":
        print("Do Something 2")
    elif choice == "1":
        print("Do Something 1")
    else:
        print("I don't understand your choice.")

 def second_menu():
     print("This is the second menu")

 main()

尝试复制,粘贴和运行此代码,看它是否更接近您想要的内容。另外,花点时间注意if/elif/else逻辑是如何工作的。如果您有任何其他问题,请与我们联系。

答案 1 :(得分:0)

我不确定您要使用代码完成什么。我甚至把它贴在IDLE上,我仍然不确定。不过不用担心,我来这里是为了帮助。我也创建了一些菜单。以下是我的一个例子:

while loop_condition == True:
print("\nWelcome to Python Calculator!\n")
print("\nPlease enter a number for what you want to do.\n")
print("Enter 1 for addition.")
print("Enter 2 for subtaction.")
print("Enter 3 for division.")
print("Enter 4 for multiplication.")
print("Enter 5 to quit.\n")

main_input = int(input("What would you like to do? "))

然后我用条件逻辑跟着它。

if main_input == 5:
    loop_condition = False
    break
else:
    num1 = int(input("\nEnter your first number: "))
    num2 = int(input("Enter your sencond number: "))


    if main_input == 1:
        print(add(num1,num2))
    elif main_input == 2:
        print(sub(num1,num2))
    elif main_input == 3:
        print(div(num1,num2))
    elif main_input == 4:
        print(multi(num1,num2))

通过在几行上打印出选项,然后在单独的变量中处理输入,我能够保持代码相当干净。如果这不能解决您的问题,或者至少在某种程度上有所帮助,请告诉我。

答案 2 :(得分:0)

#------------------------------------------------------------------------
# Name:        menu.py
# Purpose:      Despliega un menu guardado en un diccionario
#               y ejecura la funcion correspondiente a cada entrada 
#               del diccionario
#
def hace_La_0():
    return 'hice la cero'

def hace_La_1():
    return 'hice la uno'

def hace_La_2():
    return 'hice la dos'

def hace_La_f():
    return 'hice la f. Me salgo'


def llama_la(opcion='f'):
    # Obtiene la funcion del diccionario
    func = opciones[opcion]['Funcion']
##    print(func)
##    Enter_continuar()
    # Ejecuta la function
    return func()

def cls():
    import os
    _=os.system("cls")# en windows
##    _=os.system("clear") # en unix linux
##    print ("\n" * 25) #pseudo limpiar la pantalla sin os solo la desplaza

def menu(hecho='',s=25):
    print('Estas son las opciones disponibles del programa:','\n','-'*s)
    for op in opciones:
        print('\t',op,' : ',opciones[op]['Des'])
    print('-'*s,'Ya realice->',hecho)
    op=input('Opcion--->').lower()
    if op in opciones:
        print(llama_la(opcion=op))
        if op=='f':
            return op
    else:
        print('Opcion inexistente---',op,'---intente de nuevo')
        _=imput('Enter para continuar-->')
        return ''
    return op

opciones ={
'0' : {'Des': 'La opcion 0 hace esto y lo otro y lo de mas alla', 'Funcion': hace_La_0, 'Param1':'p1','Param2' :'p2'},
'1' : {'Des': 'La opcion 1 hace esto y lo otro y lo de mas alla', 'Funcion': hace_La_1, 'Param1':'p1','Param2' :'p2'},
'2' : {'Des': 'La opcion 2 hace esto y lo otro y lo de mas alla', 'Funcion': hace_La_2, 'Param1':'p1','Param2' :'p2'},
'f' : {'Des': 'Terminar', 'Funcion': hace_La_f, 'Param1':'p1','Param2' :'p2'}
}


op,hecho,s='','',25
while op!='f':
    op=menu(hecho,s)
    hecho=hecho +' ' + op
    cls()
print('-'*s,'Fin del programa: realicé:',hecho)

答案 3 :(得分:0)

原始问题已得到解答,但您可能需要考虑使用 console-menu here