为什么提供的程序的输出打印“1:1,2:1,3:2,-1:1”而不是“0:2,1:1,2:1,3:2,-1 :1" ?

时间:2018-04-27 02:24:54

标签: python class if-statement

所以这是提供的代码。我自己测试了一些东西。我了解到,如果我添加一个print(i)之后(对于i中的L)它将打印零,但如果我在(如果我)之后添加print(i)则它不会打印零。我搜索了互联网和我的教科书,但我不能自己解释。究竟什么“如果L:”和“如果我:”呢?任何帮助都会很棒,谢谢。

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 :(得分:0)

我是零,将被视为假,删除此行,你会没事的。

if i: