2017-02-23 69 views
-1

Я нахожусь на своем пути, почему я не могу прекратить получать ошибки с моим кодом. Вот часть моего кода, с которым я застрял. Цель состоит в том, чтобы функция повторялась до тех пор, пока желаемый не будет введен пользователем. После создания функции (myproject) и применения отступов списка я больше не могу ее запускать. Любая помощь будет оценена по достоинству.Ошибка диспетчеризации и ошибки, неразрешенная ссылка после отступа

def myproject() : 

Joblist = [] 
employee1_dict = {'Title':'Blahblah', 'Vacation Days': 3} 
Joblist.append(employee1_dict) 

employee2_dict = {'Title':'blahblah2','Vacation Days': 5} 
Joblist.append(employee2_dict) 

print ('Welcome To Your Employee Vacation Request Portal!') 


def bagbag(prompt): 
    if prompt == employee1_dict ['Title']: 
     print ("Greetings blahblah!\nYou Have a Total of 3 days To Use") 
    else : 
     cashcash(prompt) 
def cashcash(prompt): 
    if prompt == employee2_dict ['Title']: 
     print ("Greetings blahblah2!\nYou have a Total Of 5 Days To Use") 
    else : 
     print ("I Do Not Recognize That Response(Please Remember I Am Case-Sensitive!) ") 
     myproject() 

prompt = raw_input('Please Enter Your Title\n') 
bagbag(prompt) 
+0

Что ошибка, что вы получаете? трассировка стека была бы полезной Rickey – putonspectacles

ответ

0

С кодом возникает несколько проблем. Вы создаете dict для каждого заголовка сотрудника и помещаете его в большой список, но никогда не используете этот список, а можете обращаться к каждому из них вручную. Могу ли я предложить использовать только один диктофон с названием в качестве ключа, а дни отпуска - как ценность?

Во-вторых, вы можете скорректировать возможные значения отпуска в свой код. Если в будущем у вас будет другая группа, вам придется добавить еще один dict и другую функцию проверки. При использовании подхода с одним диктофоном вам нужно будет добавить только одну пару-ключ-значение.

Наконец, вы хотите повторить процесс ввода до тех пор, пока не будет введено что-либо действительно. Это вызывает цикл, вы делаете рекурсию, снова вызывая всю функцию.

Поскольку вы используете print() -функцию, я предполагаю, что вы используете python3.x - там нет raw_input(), только input().

В качестве примера, вы можете сделать это (я использовал свою орфографию для подсказок):

vacationDict = {'Blahblah':3, 
       'blahblah2':5} 

print('Welcome To Your Employee Vacation Request Portal!') 

while True: 
    prompt = input('Please Enter Your Title\n> ') 
    if prompt in vacationDict: 
     print("Greetings {}!\nYou Have a Total of {} days To Use".format(prompt, vacationDict[prompt])) 
     break 
    else: 
     print("I Do Not Recognize That Response (Please Remember I Am Case-Sensitive!)") 
+0

Я использую 2.7 прямо сейчас .. и причина для большого списка заключалась в доступе к диктону отдельно, и, в конечном итоге, код напечатал оценочную брутто-плату за дни, которые они снимают, но я не мог пропустите это начальное препятствие. –

+0

Для python 2.7 просто измените 'input' на' raw_input' и скорректируйте операторы 'print'. Я надеюсь, что это было бы полезно, чтобы вы могли продолжить свой проект. –