Почему выходные данные предоставленной программы выводят «1: 1, 2: 1, 3: 2, -1: 1», а не «0: 2, 1: 1, 2: 1, 3: 2, -1 : 1" ? - PullRequest
0 голосов
/ 27 апреля 2018

Так вот код предоставлен. Я проверил несколько вещей сам. Я узнал, что если я добавлю print (i) после (для i в L), он будет печатать нули, но если я добавлю print (i) после (если i :), то он не будет печатать нули. Я искал в Интернете и мой учебник, но я не могу объяснить это самостоятельно. Что именно делают «if L:» и «if i:»? Любая помощь будет великолепна, спасибо.

class TestClass(object):
      def __init__(self,L=None):
          self.D = {}
          if L:
              for i in L:
                  if i:
                      if i in self.D:
                          self.D[i] += 1
                      else:
                          self.D[i] = 1
      def __add__(self,param):
          if type(param) == TestClass:
              for k, v in param.D.items():
                  if k in self.D:
                      self.D[k] += v
                  else:
                      self.D[k] = v
              return TestClass(self.D)
          else:
              return self + TestClass(param)

      def __str__(self):
          out_str = ''
          for k, v in self.D.items():
              out_str += '{}:{}, '.format(k, v)
          out_str = out_str.strip(", ")
          return out_str

inst1 = TestClass([-1,0,0,1,2,3,3])
print(inst1)                               

1 Ответ

0 голосов
/ 27 апреля 2018

i равно нулю и будет считаться ложным, удалите эту строку, и все будет в порядке.

if i:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...