Αφού τελειώσαμε τα τυπικά, ας πάμε στο ζουμί του θέματος
Μία παρατήρηση πρώτα σχετικά με τα ονόματα μεταβλητών.
Αν και καμιά φορά είναι βαρετό να τα γράφεις, ιδίως αν είανι για κάτι πολύ μικρό και σύντομο, είναι καλή συνέχεια να έιναι περιγραφικά. Κάνουν τον κώδικα πιο ευανάγνωστο. Πχ το "a" μπορεί να γίνει magic_square.
Ακόμη απέφευγε να χρησιμοποιείς ως ονόματα μεταβλητών/συναρτήσεων κτλ τα keywords και τις builtin συναρτήσεις που έχει κρατημένα η ίδια η γλώσσα (πχ list, tuple, dict, max, min κτλ). Αυτό θα σε γλυτώσει από δυσεξήγητα bugs.
Όσον αφορά τον έλεγχο των λέξεων, το "σωστό" data type για το λεξικό που δημιουργείς είναι το set.'Όπως λέει και στο επίσημο documentation της γλώσσας, τα sets είναι για "Unordered collections of unique elements". Ο λόγος που προτιμούνται έναντι των lists που χρησιμοποιησες εσύ είναι η απόδοση. Αν έχεις ένα λεξικό με χιλιάδες λέξεις η διαφορά θα είναι περισσότερο από αισθητή. To set (σύνολο στα ελληνικά) θα το δημιουργήσεις έτσι:
dictionary = set(["bea", "ear", "arc"])
Στην python γενικά όταν θέλουμε να ελέξγουμε αν κάτι ανήκει μέσα σε κάτι άλλο, χρησιμοποιούμε το "in". Πχ για να ελέγξουμε αν ένας χαρακτήρας βρίσκεται μέσα σε μία λέξη, δε χρειάζεται να διασχίσουμε τη λέξη χαρακτήρα προς χαρακτήρα με ένα loop. Μπορούμε να κάνουμε απλά αυτό
if "w" in "qwerty":
print("yeah!")
To ίδιο πράγμα μπορείς να το κάνεις και με τα sets.
magic_square = ["bea", "ear", "arc"]
for word in magic_square:
if word in dictionary:
print("Ok")
Στην πραγματικότητα μάλλον το λεξικό δε θα το δημιουργείς γράφοντας τις λέξεις, αλλά θα τις διαβάζεις από ένα αρχείο του υπολογιστή σου. Το βλέπεις στη συνέχεια αυτό.