Rodion Mikhailov Ответов: 3

Что не так с этим кодом ? или Почему Python говорит: "переменная не используется" ?


Я изучаю основы Python, просматривая 4,5-часовое видео на YouTube от freeCodeCamp.
Я добрался до for-loops и, увидев один из примеров того, как мы можем их использовать, захотел написать код, делающий то же самое, но не использующий for-loop (я часто делаю такие вещи, что помогает мне лучше понять материал, который я покрываю). Я попытался написать код, и, судя по всему, что я знаю о Pyhton (не так уж много), это должно сработать. Но в результате я получаю, что ни "i", ни "result1" не используются, а выход - "None".

Что я уже пробовал:

<pre>
def raise_to_power_1(base1, power1):
    i = 0
    result1 = 1
    if i < power1:
        result1 = result1 * base1
        i = i + 1
    else:
        return result1

3 Ответов

Рейтинг:
20

OriginalGriff

for это цикл: он повторяет код внутри тела цикла до тех пор, пока условие больше не будет истинным.
Ваш код этого не делает - он выполняет его один раз, а затем либо возвращает 1, либо просто спонтанно заканчивается без какого-либо возвращаемого значения.

Я думаю, что вам нужно либо лучше изучить свои видео (а большинство обучающих видеороликов по разработке YouTube - это полный мусор), либо попробовать учиться из лучшего источника - возможно, из книги или курса, - который объясняет, что такое цикл является вместо того, чтобы предполагать, что вы можете заменить его без какой-либо такой структуры!


Rodion Mikhailov

Я вижу, так что тогда он должен хорошо работать с while-loop:

def raise_to_power2(base2, power2):
    i = 0
    result2 = 1
    while i < power2:
        result2 = result2 * base2
        i = i + 1
    print(result2)


raise_to_power2(5, 6)

OriginalGriff

Так-то лучше!

Рейтинг:
2

CPallini

Ваш алгоритм нуждается в итерации, которую ваша реализация не обеспечивает. Попробуй

def raise_to_power_1(base1, power1):
  i = 0
  result1 = 1
  while True:
    if i < power1:
      result1 = result1 * base1
      i = i + 1
    else:
      return result1

print(raise_to_power_1(5,2))


Или даже (с тех пор: "Повторять-это человеческое, повторять-божественное")
def raise_to_power_1(base1, power1):
  if ( power1 == 0):
    return 1
  return base1 * raise_to_power_1(base1, power1-1)

print(raise_to_power_1(5,2))


Рейтинг:
0

Richard MacCutchan

Не тратьте свое время на Youtube, Python.org предоставляет полный учебник по адресу Учебник по Python — документация по Python 3.7.6[^].