2 * 2 * 2 ... j раз без оператора ** - PullRequest
0 голосов
/ 05 февраля 2019

Я выполняю задание, в котором я должен вычислять 2 * 2 * 2 ... j раз, но без использования оператора **.

Я пытался использовать квадрат, но когда подумал,это не могло быть квадратом.

N = int(input('Num: '))
x = 1
while True:
    if x * x > 0:
        break
    else:
        x += 1
print(x - 1 * x - 1)

Результатом должно быть 32, если я поставлю 5, но на самом деле получу -1.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019
import math
math.pow(x, N)

Это должно сделать это!

Редактировать: math.pow сломается для больших значений N, как описано в комментариях.Вместо этого используйте решение Tomothy32.

0 голосов
/ 05 февраля 2019

Я думаю, вы слишком усложняете вещи:

j = int(input('Num: '))
x = 1
for _ in range(j):
   x *= 2
print(x)

или

j = int(input('Num: '))
x = 1
while j > 0:
    x *= 2
    j -= 1
print(x)
0 голосов
/ 05 февраля 2019

Вы можете сдвинуть бит:

N = int(input('Num: '))
print(1 << N)

Или просто используйте встроенный pow, хотя в основном это оператор **:

N = int(input('Num: '))
print(pow(2, N))

Если вы хотелииспользовать цикл:

N = int(input('Num: '))
result = 1
for _ in range(N):
    result *= 2
print(result)
...