【问题标题】:Python 3.4.2 List AdditionPython 3.4.2 列表添加
【发布时间】:2015-01-11 06:52:52
【问题描述】:

我对 Python 和一般编程非常陌生。 我应该在列表中添加前 7 个数字

grades = [ '9', '7', '7', '10', '3', '9', '6', '6', '2' ]

所以我写了这段代码:

print("1.", grades[0] + grades [1] + grades [2] + grades [3] + grades [4] + grades[5] + grades[6] )

但它只打印出“97710396” 这是刚刚打印出来的数字,因为它是一个没有空格的索引。如何添加它们以便打印出 51?

【问题讨论】:

  • 数字 9字符串 '9' 不同(注意引号)。这就是你问题的症结所在。

标签: python list python-3.x addition


【解决方案1】:

不用透露太多...列表中的“数字”实际上是strings,python 允许您添加字符串...通过将它们连接在一起。所以'a' + 'b' + '9' 给你'ab9'。您需要将这些strings 转换为ints 为int('19'),因此int('9') + int('7') 给出16

【讨论】:

    【解决方案2】:

    将所有内容转换为整数,求和,打印出来:

    print("1.",sum(map(int, grades[:7])))
    

    【讨论】:

      【解决方案3】:

      您需要将字符串转换为ints 才能进行数字运算(而不是字符串连接):

      grades = ['9', '7', '7', '10', '3', '9', '6', '6', '2']
      grades = [int(x) for x in grades]
      print("1.", grades[0] + grades[1] + grades[2] + grades[3] +
                  grades[4] + grades[5] + grades[6])
      

      或者,将sum 与列表切片一起使用(如果要添加的项目是连续项目,则很有用)

      grades = ['9', '7', '7', '10', '3', '9', '6', '6', '2']
      grades = [int(x) for x in grades]
      print("1.", sum(grades[:7]))
      

      【讨论】:

        【解决方案4】:

        这些是单独的字符串。你不能对字符串做数学运算。

        当您对字符串执行+ 时会发生什么称为字符串连接。

        即。 '1'+'2' 将产生 '12' 而不是 '3'

        您需要使用int() 将它们转换为整数才能执行算术运算。

        var result = int('1') + int('2')
        >> 3
        

        要么

        print("1.", int(grades[0]) + int(grades [1]) + int(grades [2]) + int(grades [3]) + int(grades [4]) + int(grades[5]) + int(grades[6]) )
        

        或使用list slicingsum 的时髦列表理解

        grades = [int(x) for x in grades]
        print("1.", sum(grades[:7]))
        

        【讨论】:

          【解决方案5】:

          列表grades[] 包含字符串变量。整数是整数。您需要将grades[] 列表中的值更改为整数。为此,您需要删除 grades[] 中值周围的引号。然后它将输出该列表中所有数字的总和。 希望这会有所帮助。

          【讨论】:

            【解决方案6】:
            sum = 0
            for i in range(0,7):
                sum += int(grades[i])
            print(sum)
            

            【讨论】:

              【解决方案7】:

              您可以为此使用reducelambda

              >>> print( "1.",reduce(lambda x,y:int(x)+int(y),grades[:7]))
              

              当您使用 python 3.x 标记此问题时,reduce 现在是 functools 模块的一部分。

              import functools
              print( "1.",functools.reduce(lambda x,y:int(x)+int(y),grades[:7]))
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-04-29
                • 2020-08-09
                • 2015-08-21
                • 1970-01-01
                • 1970-01-01
                • 2021-01-10
                • 1970-01-01
                • 2016-01-09
                相关资源
                最近更新 更多