Wenn das Programm importiert wird, ist __name__ gleich dem Dateinamen.
Wenn das Programm aber selbst ausgeführt wird, ist __name__ gleich __main__.
Die Überprüfung, if __name__ == __main__ heißt also eigentlich nur: Wenn dieses Programm das Hauptprogramm ist, welches aufgerufen wurde - Also nicht importiert wurde.
Das soll verhindern, dass Programmcode beim Importieren der Datei ausgeführt wird.
Sonst würde man jedes mal, wenn man das Programm importiert und eigentlich nur die Funktionen/Klassen, die in dem Programm enthalten sind, importieren will, auch die print-Anweisungen und sonstiges ausführen, was sonst noch so in dem Programm gemacht wird.
Edit: Fehler nr 2: Auf 1000 mal beantwortete Fragen nochmals neu antworten

Aber egal, wir haben Weihnachtszeit und ich wollte auch mal wieder was posten.