Как отличить 1 от 1 * 1 или 1 ** 1 в python

#python

#python

Вопрос:

Если у меня есть функция, которая получает аргумент, и я хочу, чтобы этот аргумент возвращал True, если я ставлю правильную табуляцию, но возвращал False, если я добавляю что-либо еще, даже если результат в одном из элементов равен единице (например, 1 1-1 или 1 * 1), как мне это сделать?

Что я могу сделать, чтобы вернуть False, если я добавлю в аргумент tab с элементом типа 1 * 1 или 1-1. В этом случае «tab» может содержать элементы, равные 1, -1 и 0, поэтому 1-1 должен возвращать False. Вот функция:

 #lets consider this for tab. as you can see tab is a tuple with 3 tuples, each with 3 elements
tab = ((1,-1,1),(0,-1,0),(-1,1,1))
tab2 = ((1,-1,1),(1-1,-1,0),(-1,1,1))

def eh_tabuleiro(tab):
if len(tab) != 3:  
    return False
else:  
    for row in tab:
        if len(row) != 3: 
            return False
        else: 
            for element in row:
                if element not in (-1, 0, 1):
                    return False
    return True
 

В этом случае, если tab, eh_tabuleiro(tab) возвращает True (как и должно быть), но eh_tabuleiro(tab2) также возвращает True, и оно должно быть False . Что я могу сделать?
Заранее спасибо, ребята!

Комментарии:

1. …но 1 * 1 равно 1.

2. Действительно: вы пытаетесь отделить «a = 1» от «a = 0 1». Вы просто не можете: сохраненные данные в памяти точно ТАКИЕ ЖЕ.

3. Вероятно, вам следует использовать строки вместо чисел, чтобы не допустить вычисления «формул».

4. что-то вроде: if str(элемент) != «1»: