So i got this assignment where i'm supposed to create a palindrome detector and make a simple interface using tkinter. We also have to remove specifik characters and replace them with a blankspace. I also want to add that we are not allowed to use isalnum() Now the problem is the following:
File "Documents/palindrometkinter.py", line 71, in result
turn()
File "Documents/palindrometkinter.py", line 62, in turn
i = len(user_input)
NameError: name 'user_input' is not defined 
I'm really new when it comes to python so i'm not really good at it, but after hours of getting nowhere i'm asking for help. This is my code so far...
# -*- coding: UTF-8 -*-
import tkinter
import tkinter.messagebox
def main():
 settings()
 tkinter.mainloop()
def settings():
 main_window = tkinter.Tk()
 top_frame = tkinter.Frame()
 mid_frame = tkinter.Frame()
 bottom_frame = tkinter.Frame()
 main_window.title("Palindromdetektor")
 main_window.geometry("400x400")
 global label1
 label1 = tkinter.Label(top_frame, text = "Skriv in ett palindrom nedan 
                                       för att testa det!",
                           bg = "green", width = 60, height = 6)
 global button1
 button1 = tkinter.Button(mid_frame, text = "Testa palindrom", height = 
    3, width = 22, command = result)
 global button2
 button2 = tkinter.Button(bottom_frame, text ="Spara palindrom", height 
  = 3, width = 22, command = save)                                
 global button3
 button3 = tkinter.Button(bottom_frame, text ="Avsluta programmet", 
     height = 3, width = 22, command=main_window.destroy)
 global palindromentry
 palindromentry = tkinter.Entry(mid_frame, width = 67)
 palindromentry.pack()
 top_frame.pack()
 mid_frame.pack()
 bottom_frame.pack()
 label1.pack()
 button1.pack()
 button2.pack()
 button3.pack()
def entry():
 not_valid = " -,.!?:;'+()/" #The not accepted characters
 user_input = palindromentry.get()
 i=0
 while i < len(not_valid): 
    user_input = user_input.replace( not_valid[i], "")
    i = i + 1
 global backward_string
 backward_string = ""
def turn():
 i = len(user_input)
 while i > 0:
   backward_string += user_input[i-1] 
   i -=1
   if user_input == backward_string:
    equal = True     
def result():
 turn()
 entry()
 feedback_string = ""
 if (user_input == backward_string):
    label1.config(text="Ja, detta är ett palindrom!", bg="green") #when 
                                                      it's a palindrome
 elif (user_input != backward_string):
    label1.config(text="Det är inte en palindrom!", bg="red") #message 
                                          when it's not a palindrome
 else:
     label1.config(text="Hoppsan nu har något gått fel!")    
def save():
 if (user_input == backward_string):
    my_palindrome = open("palindrom.txt", "a") # if it's a 
                             palindrome you should be able to save it.
    my_palindrome.write(user_input + "\n")
    label1.config(text="Palindrom har sparats!")
 elif (user_input != backward_string):
    label1.config(text="Det gick inte att spara, måste vara en 
                         palindrom!")# you can't save it when it's not
 else:
    label1.config(text="Något gick fel!") # when something goes wrong
if __name__ == '__main__':
     main()
 
    