Python:сумма треугольных чисел

#python #loops

Вопрос:

Я новичок в Python и пытаюсь создать функцию для вычисления суммы треугольных чисел между нижней и верхней границей. Однако мой вывод может возвращать только первое треугольное число между этим пределом 2. Спасибо за помощь!

 def  is_triangle(num):
    if num < 0:
        return False
    sum = 0
    n = 1
    while(sum<=num):
        sum = sum   n
        if sum == num:
            return True
        n =1
    return False
 
 def triangle_sum(lower_bound, upper_bound):
    sum = 0
    for i in range(lower_bound,upper_bound 1):
        if is_triangle(i)== True:
            sum  = i
            i =1
            return sum
if __name__ == "__main__":
    print(triangle_sum(1,10))
 

Комментарии:

1. Не используйте встроенное ключевое слово python sum в качестве переменной.

Ответ №1:

 def  is_triangle(num):
    if num < 0:
        return False
    summ = 0
    n = 1
    while(summ<=num):
        summ = summ   n
        if summ == num:
            return True
        n =1
    return False




def triangle_sum(lower_bound, upper_bound):
    summ = 0
    for i in range(lower_bound,upper_bound 1):
        if is_triangle(i)== True:
            summ  = i
            i =1
            return summ
if __name__ == "__main__":
    print(triangle_sum(1,10))
 

Это будет правильно, так как ваш отступ был неправильным.
Вы можете узнать больше об этом здесь,

https://www.programiz.com/python-programming/statement-indentation-comments
https://www.python.org/dev/peps/pep-0008/

Кроме того, sum-это ключевое слово в Python, поэтому не используйте sum в качестве переменной.

Ответ №2:

Сумма вашего возврата была указана с отступом в поле «если» для. Это должно быть непосредственно под функцией, вот и все!! Если вы новичок в программировании в целом, то один из способов обнаружения таких ошибок-это отладка вашего кода. Например, вы могли бы напечатать значение » i » внутри цикла for и заметить, что он просто остановился после прохождения всего одной итерации.

 def  is_triangle(num):
  if num < 0:
    return False
  sum = 0
  n = 1
  while(sum <= num):
    sum = sum   n
    if sum == num:
      return True
    n  = 1
  return False

def triangle_sum(lower_bound, upper_bound):
  sum = 0
  for i in range(lower_bound, upper_bound   1):
    if is_triangle(i) == True:
      sum  = i
      i  = 1
  return sum

if __name__ == "__main__":
  print(triangle_sum(1, 10))