#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))