Синтаксическая ошибка при суммировании в цикле for Python

Я пытаюсь определить функцию для преобразования двоичного числа в десятичное число и проверить, является ли оно абсолютным квадратом или нет. Я передаю список двоичных чисел в качестве аргумента, и функция должна выводить «True» или «False» в качестве вывода в том же порядке, что и элементы списка; показывая, являются ли они абсолютными квадратами.

При попытке получить синтаксическую ошибку в девятой строке, где я пытаюсь вычислить десятичный эквивалент двоичных цифр, добавляя отдельные значения, возникающие из каждой двоичной цифры в зависимости от ее положения. Логика выполнения: 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

Скажите пожалуйста, почему сообщается об этой ошибке?

Всего 1 ответ


В 20-й строке измените:

value = (2**(no_of_digit - (p+1)) * int(r) 

Для того, чтобы:

value = (2**(no_of_digit - (p+1)) * int(r) )

Есть идеи?

10000