2016-11-30 4 views
1

У меня есть функция, написанная здесь:Почему я получаю сообщение об ошибке в этом коде Python?

def addItem(aBookcase, name, mediaType): 
    """ 
    Returns False if aBookcase is full, otherwise returns True and 
    adds item of given name and mediaType to aBookcase. 
    """ 
    pass 
    emptySpacesBefore = aBookcase.getEmptySpaces() 
    if aBookcase.getEmptySpaces() == 0: 
     added = False 
     return added 
    else: 
     position = findSpace(aBookcase) 
     aBookcase.setName(*position, name=name) 
     aBookcase.setType(*position, mediaType=mediaType) 
     added = True 
     emptySpacesAfter = aBookcase.getEmptySpaces() 
    assert added is True, "No free positions" 
    assert emptySpacesAfter < emptySpacesBefore, "Same amount of empty spaces" 
    assert aBookcase.getName(*position) is name, "Error with name" 
    assert aBookcase.getType(*position) is mediaType, "Error with media type" 

Но когда я иду, чтобы проверить функцию с этой строки кода:

assert addItem(small, "Algorhythms, date structures and compatibility", BOOK) 

я получаю «AssertionError», как показано здесь:

Screenshot of 'AssertionError'

Итак, если я прав, значит, я не справляюсь с этим, но я не уверен, как и почему? Это что-то не так с моим кодом? Что-то пропало? и т. д.

+0

Можете ли вы поместить текст ошибки утверждения в вопрос? Некоторые люди (например, я) находятся в сети, которая блокирует imgur. –

+0

@AndrewLamarra: помощь для слепых: верхний левый угол (только что заметил его прямо сейчас): 'ity", BOOK) ', а затем" утверждение, необработанное этим кодом ". –

ответ

1

, когда он работает должным образом, функция addItem ничего не возвращает, поэтому возвращает None, что рассматривается как сбой последнего оператора assert, который вы вставили. Вы должны вернуть added для обоих случаев (True или False)

BTW, так как вы достигли этой линии, это означает, что все предыдущие утверждения ИТАК хорошие новости: ваш код ОК.

+0

Спасибо вам большое, так же просто, как забыть" return добавил 'заявление haha. Могу носить эту шляпу dunce в углу прямо сейчас: D. – Gazza732

+0

Я просто заметил необходимость в 'return'. Сообщение отредактировано. Обязательно оставайтесь как минимум 10 минут в этом углу :) –

+0

Я чувствую еще более глупо сейчас, на самом деле у меня действительно было выражение «return added» в предложении else, но случайно удалило его, когда я положил первую строку «assert» ha. Не знаю, почему/как я это сделал, думаю Я хотел бы подчеркнуть. Еще раз спасибо – Gazza732