1) todo esto ya está muy planteado en la red hace mucho, para el corrector se usa la distancia de Levenshtein, es solo cuestión de buscar, hay implementación en python y son pocas líneas.
2)Si hay muchas coincidencias y están en una lista las mostrás de a una o la cantidad que elijas.
3)está bien querer aprender un lenguaje ¿pero inventar la rueda para ello?
4)para aprender enfocate en algo práctico y actual, te dría aprende numpy,pandas,simpy matpliolib etc. y para entornos gráficos pyqt, tkinter es lo más básico.
5)te parecen críticas, pero parece que te falta información.
Edito:
como tengo tiempo antes de irme te muestro un código:
Código
#-*- coding:utf-8 -*- import re from collections import Counter WORDS = Counter() patron = re.compile(r'\w+') with open('Ortografia.txt') as diccionario: for text in diccionario: WORDS.update(patron.findall(text.lower())) N=sum(WORDS.values()) def h(word): candidates = (known([word]) or known(edits1(word)) or known(edits2(word)) or [word]) return list(candidates) def known(words): return set(w for w in words if w in WORDS) def edits1(word): letters = 'abcdefghijklmnñopqrstuvwxyz' splits = [(word[:i], word[i:]) for i in range(len(word) + 1)] deletes = [L + R[1:] for L, R in splits if R] transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R) > 1] replaces = [L + c + R[1:] for L, R in splits if R for c in letters] inserts = [L + c + R for L, R in splits for c in letters] return set(deletes + transposes + replaces + inserts) def edits2(word): return (e2 for e1 in edits1(word) for e2 in edits1(e1)) palabra = "albaaca" lista = h(palabra) print(lista)
por supuesto que ahora depende de tu archivo de texto con las palabras, en la red hay varios en texto plano con el listado de la RAE
Después si querés verificás el largo de la lista y elegís cuantas mostrar, como dije tema muy facil.