【问题标题】:Python loop: calculate sum between 2 random values from 1-10Python循环:计算1-10的2个随机值之间的总和
【发布时间】:2019-10-16 19:43:42
【问题描述】:

我必须生成两个 1-10 之间的随机整数,然后计算该范围内数字的总和。谁能帮我把它放在一个循环中?

import random
sum= 0

from random import randrange
num1 = (randrange(1,11))
num2 = (randrange(1,11))
count = sum
sumtotal = sum(range(num1 + 1, num2))
while count <= 10
print ("The sum is", sumtotal)

【问题讨论】:

  • sum 是内置 python 函数的名称。您将如何将变量count 定义为sum?另外,您是要迭代 10 次,还是要根据需要重复计算多次,直到结果

标签: python


【解决方案1】:

你的意思是这样的?

import random as r

r.seed(4)

def randsumware():

    num1 = r.randint(1,11)
    num2 = r.randint(1,11)

    return num1+num2

res = randsumware()
print ("The sum is: {}".format(res))

while randsumware() <= 10:
    res = randsumware()
    print ("The sum is: {}".format(res))

【讨论】:

    【解决方案2】:

    您可以使用列表推导,生成一个包含 2 个随机整数的列表。 sum() 将列表中的所有项目相加:

    import random
    result = sum([random.randint(1, 10) for x in range(2)])
    print(result)
    

    【讨论】:

      【解决方案3】:

      提示:您不需要显式迭代[i, j] 范围内的所有元素。使用算术级数之和,您可以在恒定时间内计算和:

      (1+2+...+j)-(1+2+...+i-1) = (1-1)+(2-2)+...+(i-1-i+1)+i+(i+1)+...+j = i+(i+1)+...+(j-1)+j

      import random
      
      
      def arithmetic_progression_sum(n):
          return ((1 + n) * n) // 2
      
      
      def subsequence_sum(a:int, b:int):
          assert(a <= b)    
          return arithmetic_progression_sum(b) - arithmetic_progression_sum(a-1)
      
      
      def run():
          a = random.randint(1, 10)
          b = random.randint(a, 10)
      
          return subsequence_sum(a, b)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 1970-01-01
        • 2018-11-12
        • 2021-01-01
        相关资源
        最近更新 更多