Как обрабатывать AssertError в Python - PullRequest
2 голосов
/ 05 ноября 2019

У меня есть текстовая строка с именем newSong, которая содержит два экземпляра (название, исполнитель), например:

newSong = Song ("Rum and Raybans", "Sean Kingston and Cher Lloyd")

У меня есть метод с именем checkIfArtistExists(self, artist). Моя задача - использовать split, for loop и if. Мне нужно разделить исполнителя, поэтому, если у исполнителя есть имя, состоящее из Шона, Кингстона, Шер, Ллойда, оно вернет true, иначе false.

Я получаю assertError:

>>> assert(not newSong.checkIfArtistExsists("Sadley"))       # False
AssertionError

Я новичокк программированию и моей логике не так уж хорошо ... Может кто-нибудь дать мне совет или совет?

class Songs(object):

   def __init__(self, tittel, artist):

        #Instanse variabler

        self._tittel = tittel

        self._artist = artist

  def  CheckIfArtistExists(self,artist):


       names = artist.split()

       for n in names:
           if n in artist:
              return true
           else:
             return false

newSong = Song ("Rum and Raybans", "Sean Kingston and Cher Lloyd")

assert(newSong.CheckIfArtistExists("Sean Kingston and Cher Lloyd"))
assert(not newSong.CheckIfArtistExists(""Sadley"")) #False

1 Ответ

0 голосов
/ 05 ноября 2019

Вы проверяете свой аргумент artist против себя, а не переменную экземпляра _artist. Вот почему newSong.checkIfArtistExists("Sadley") - «Истина», когда оно должно быть «Ложь».

Ваш цикл завершается, как только находит совпадение. Следует подождать, пока он проверит все, что разделяемые части являются подстроками.

def CheckIfArtistExists(self, artist):

   names = artist.split()

   for n in names:
       if n not in self._artist:
          return False
   return True
...