【问题标题】:Getting Sum from a randint loop从 randint 循环中获取 Sum
【发布时间】:2021-10-29 02:50:45
【问题描述】:

我想得到循环产生的随机数的总和 这是我的循环

for i in range(1, rolls + 1):
    random1 = str([random.randint(1, 6)])
    print(f'Roll {i}:' + random1)
The output looks like this 
Roll 1:[2]
Roll 2:[5]
Roll 3:[1]
Roll 4:[1]
Roll 5:[2]
Roll 6:[4]
Roll 7:[2]
Roll 8:[5]
Roll 9:[1]
Roll 10:[6]

我如何从 [括号] 中得到总和?

【问题讨论】:

    标签: python python-3.x loops sum


    【解决方案1】:

    使用变量来跟踪总和:

    total = 0
    for i in range(1, rolls + 1):
        n = random.randint(1, 6)
        total += n
        print(f'Roll {i}: [{n}]')
    
    print(f"Total: {total}")
    

    使用sum

    nums = [random.randint(1, 6) for i in range(1, rolls + 1)]
    
    for i, n in enumerate(nums):
         print(f'Roll {i}: [{n}]')
    
    print(f"Total: {sum(nums)}")
    

    【讨论】:

      【解决方案2】:

      或者,这是在 3.8+ 中使用 := 运算符的更短的方法:

      total = 0
      
      for i in range(1, rolls + 1):
          total += (n := random.randint(1, 6))
          print(f'Roll {i}: [{n}]')
      
      print(f"Total: {total}")
      

      【讨论】:

      • 我认为这对于提出这个问题的人来说有点先进,所以我没有包括它。但仍然喜欢另一种选择。 +1
      【解决方案3】:
      sum = 0
      for i in range(1, rolls + 1):
          rand = random.randint(1, 6)
          sum += rand
          random1 = str(rand)
          print(f'Roll {i}:' + random1)
      print(sum)
      

      【讨论】:

      • 不要建议有人覆盖 python 内置!顺便说一句,这也只是我的答案的副本
      • 尽量避免对变量使用内置的sum
      【解决方案4】:

      您可以定义一个将所有随机数相加的变量

      sum_number = 0
      for i in range(1, rolls + 1):
          random_number = random.randint(1, 6)
          random1 = str([random_number])
          print(f'Roll {i}:' + random1)
          sum_number += random_number
      print(sum_number)
      

      或者你可以重写它

      random_number_list = [random.randint(1, 6) for _ in range(rolls)]
      sum_number = sum(random_number_list)
      # print random number
      for i,random_number in enumerate(random_number_list):
          print(f'Roll {i+1}:' + random1)
      print(sum_number)
      
      

      如果不需要看打印,只需要前两行代码

      【讨论】:

      • 嗯,通常你不会将 f 字符串与字符串连接混合。我觉得你会使用其中一个。
      • 是的,我也推荐使用一个。我只是复制了他原来的打印代码
      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 2014-03-13
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      相关资源
      最近更新 更多