Почему выдает два числа при выполнении кода?

Рейтинг: -2Ответов: 3Опубликовано: 04.08.2023
n = int(input('Введите число n: ')
k = int(input('Введите число k: ') 


def my(n, k):
    if n > 20:
        return 0
    elif n <= 20: 
        total_t = 0 
   
        for i in range(1, n+1):
            if i % 2 == 0: 
                total_t += (i**k) 
                print(total_t)


my(n, k) 

Ответы

▲ 1

Потому что print() стоит в теле цикла for и выполняется столько раз, сколько выполняется условие if. И если вы говорите, что нужна сумма чётных чисел n в степени k, тогда возведение в степень нужно также выводить из цикла for.

n = int(input('Введите число n:'))
k = int(input('Введите число k: '))

 def my(n, k):
    if n > 20:
        return 0
    elif n <= 20:
        total_t = 0
        for i in range(1, n + 1):
            if i % 2 == 0:
                total_t += i
        total_t **= k
        print(total_t)

my(n, k)
▲ 0

Если функцию определять необязательно:

print(0 if n > 20 else sum([i ** k for i in range(1, n+1) if i % 2 == 0]))

Если обязательно:

def my(n,k)
    return 0 if n > 20 else sum([i ** k for i in range(1, n+1) if i % 2 == 0])

print(my(n,k))

А почему конкретно Ваш код работает некорректно, Вам уже ответил @Oleg_S, не буду повторяться.

▲ -1

Если я правильно понял автора.

n = int(input("Введите число n: "))
k = int(input("Введите число k: "))

def my(n, k):
    if n > 20:
        return 0
    elif n <= 20: 
        total_t = 0 
        for i in range(1, n+1):
            if i % 2 == 0: 
                total_t += (i**k) 
    return total_t
res = my(n, k)
print(res)