Я пытаюсь определить функцию для преобразования двоичного числа в десятичное число и проверить, является ли оно абсолютным квадратом или нет. Я передаю список двоичных чисел в качестве аргумента, и функция должна выводить «True» или «False» в качестве вывода в том же порядке, что и элементы списка; показывая, являются ли они абсолютными квадратами.
При попытке получить синтаксическую ошибку в девятой строке, где я пытаюсь вычислить десятичный эквивалент двоичных цифр, добавляя отдельные значения, возникающие из каждого бинарный ди git в силу своего положения. Logi c Исполнения: 1001 в двоичном виде [pow (2,3) * 1 + pow (2,2) * 0 + pow (2,1) * 0 + pow (2,0) * 1] в десятичном виде , Это равно 9, что является абсолютным квадратом 3. Таким образом, вывод должен быть "True"
import math
n = int(input("Enter the total no of elements to check: "))
num_list = []
for k in range (n):
print("Enter the number at position "+str(k)+" : ")
num = int(input())
num_list.append(num)
#print(num_list) for debugging purpose
def Binary_SquareRoot_Checker(input_list):
for i in input_list:
q = str(i)
no_of_digit = len(q)
#For each element of the list, we need to count the no of digits present
addition_num = 0
for p in range (no_of_digit):
r = q[p]
value = (2**(no_of_digit - (p+1)) * int(r)
addition_num = addition_num + value
#print(addition_num) just to see the decimal number
root = math.sqrt(sum_num)
if int(root + 0.5) ** 2 == sum_num:
#Checking for absolute square property
print("True")
else:
print("False")
Binary_SquareRoot_Checker(num_list)
Я получаю Синтаксическая ошибка при addition_num = addition_num + value
Скажите, пожалуйста, почему сообщается об этой ошибке?