Creo que tienes 2 errores.
1ero, si pones
while palabra == palabra:
entonces ese bucle no va a terminar, a menos que le pongas un break luego (pero lo normal es especificar en la condición, en qué caso se quiere que se repita), o sea ¿quieres un bucle que no termine? No es que esté mal, pero en algunos casos no tiene sentido, incluso en algunos lenguajes se te puede "trancar" la computadora, o sea, se tiene que cerrar el programa de un modo anormal, porque por sí solo no termina...
Además, si quieres hacer eso, creo que es mejor hacerlo así por ejemplo:
while 0 == 0:
porque de ese modo no haces que la computadora tenga que averiguar o leer el valor de una variable.
¿Entiendes? Si pones "a == a", o "juanito == juanito", etc, esas condiciones siempre se van a cumplir, porque cada valor es igual a si mismo.
2ndo, no tiene sentido definir una variable dentro de un bucle, a menos que le cambies el valor de algún modo.
Es como que digas:
Repetir:
"Soldado, párese derecho."
mientras a==a
No tiene sentido que des la orden infinitas veces, porque el soldado no se va a sentar ni nada hasta que tú se lo digas, va a seguir parado derecho hasta que le digas que cambie, no necesitas decirle a cada segundo "siga parándose derecho". Con las definiciones de variables es igual, una vez que las definís se quedan así hasta que las cambies, no necesitas repetir la misma definición a cada segundo.