2014-01-29 5 views
0

Только что открыл этот форум, и это невероятно, насколько полезно его сообщество. Ну, у меня есть проблема, которая пытается создать цикл while в Python. Я хочу, чтобы меню программы повторялось, пока не выберете опцию 6 - Salir (Exit). Сначала все нормально, но после того, как я выберу опцию, и программа напечатает х вещь, я нажимаю клавишу ввода, чтобы вернуться в меню или продолжить (как при использовании паузы на C) и получить сообщение об ошибке.Ироническое расстройство с While и Pause на Python

Juan es un empleado mexicano comun con poco salario minimo. Que quiere saber de el? MENU 
1.Salario 
2.Sombrero 
3.Playera 
4.Pantalones 
5.Tenis 
6.Salir 

Seleccione una opcion 1 El salario de Juan es 7.5 

MENU 
1.Salario 
2.Sombrero 
3.Playera 
4.Pantalones 
5.Tenis 
6.Salir 

Seleccione una opcion Traceback (most recent call last): File "C:\Users\joguzman\Documents\Proyectos Eclipse\Clases\src\main.py", line 22, in <module> 
    opcion=int(input("\nSeleccione una opcion\n")) ValueError: invalid literal for int() with base 10: '' 

Я также хочу, чтобы он очищал экран, чего не происходит вовсе. Вот мой код:

import os class empleadoClass: #las propiedades que tendra cada empleado 
    salario=7.5 
    sombrero='nike' 
    playera='polo' 
    pantalones='patito' 
    tenis='adidas' 
    juanObject = empleadoClass() #'juanObjeto' esta "heredando" propiedades de empleadoClass 

print ("Juan es un empleado mexicano comun con poco salario minimo. Que quiere saber de el?") opcion=1 


while (opcion!=6): 
    print("MENU \n1.Salario \n2.Sombrero \n3.Playera \n4.Pantalones \n5.Tenis \n6.Salir") 
    opcion=int(input("\nSeleccione una opcion\n")) 



    if (opcion==1): 
     print ("El salario de Juan es ",juanObject.salario) 
     os.system('pause>nul') 
     os.system('cls') 

    elif (opcion==2): 
     print ("La marca del sombrero de Juan es ",juanObject.sombrero) 
     os.system('pause>nul') 
     os.system('cls') 

    elif (opcion==3): 
     print ("La marca de la playera de Juan es ",juanObject.playera) 
     os.system('pause>nul') 
     os.system('cls') 

    elif (opcion==4): 
     print ("La marca de los pantalones de Juan es ",juanObject.pantalones) 
     os.system('pause>nul') 
     os.system('cls') 

    elif (opcion==5): 
     print ("La marca de los tenis de Juan es ",juanObject.tenis) 
     os.system('pause>nul') 
     os.system('cls') 

    elif(opcion==6): 
     print ("Gracias por usar nuestro programa!") 

    else: 
     print ("Ingrese una opcion correcta") 
     os.system('pause>nul') 
     os.system('cls') 

Заранее благодарен! : D И извините за любые грамматические ошибки, так как вы можете видеть, что я не являюсь носителем английского языка.

EDIT: Кажется, структура кода была беспорядочной при публикации ... Кто-нибудь знает, как это решить? :/

+0

Что касается вашего форматирования, кажется, что вы сделали цитату блока ('' '' '' ''), а скорее код (кнопка '' '{}' '') – wnnmaw

+0

Какую версию Python вы используете? 2.x или 3.x? – wnnmaw

ответ

0

Я думаю, что более простой способ сделать меню, как это должно:

def print_menu(): 
    # print stuff here, 6 exits 

while True: 
    print_menu() 
    try: 
     choice = int(input('>>')) 
     if choice == 1: 
      blah 
     elif choice == 2: 
      more blah 
     elif choice == 6: 
      break 
    except ValueError: 
     handle_error() 

Что касается очистки экрана, которая зависит от того, какую ОС вы используете и как вы работаете с программой. См. Этот вопрос - how to clear the screen in python