This is the code to trasform a phrase into an omissis quiz
import re import random from random import shuffle def get_words(phrase:str) -> [list, list]: ''' return the omissed words in order and shuffled ''' path = r"(\w*)\*" words = re.findall(path, phrase) shuffled = words.copy() # shuffle(shuffled) # print(f"{words=}") # print(f"{shuffled=}") return words, shuffled def set_html(shuffled) -> [str, str]: html = "<p>" for word in shuffled: html += word + " " doc = html html +="</p>" # print(html) return html, doc def show_omissis_init(phrase:str, shuffled: list) -> [str, str]: for w in shuffled: phrase = phrase.replace(w, f"<b style='color:blue'>{w[0]}{'|_'*(len(w)-2)}|{w[-1]}</b>") doc = phrase phrase = f"<p>{phrase}</p>" return phrase, doc def show_omissis_init_middle(phrase:str, shuffled: list) -> [str, str]: for w in shuffled: a = random.randrange(1, (len(w) - 1)) # numero a caso di lettera da mostrare phrase = phrase.replace(w, f"<b style='color:blue'>{w[0]}{'|_'*len(w[2:a+1])}|{w[a]}{'|_'*len(w[a+1:-1])}|{w[-1]}</b>") doc = phrase phrase = f"<p>{phrase}</p>" return phrase, doc def show_omissis(phrase:str, shuffled: list) -> [str, str]: for w in shuffled: phrase = phrase.replace(w, "|"*len(w)) doc = phrase phrase = f"<p>{phrase}</p>" return phrase, doc def output(ph): words, shuffled = get_words(ph) html, doc = set_html(shuffled) html, doc = show_omissis_init_middle(ph2, shuffled) print(html) # Put here the phrase to show without the omissis putting and * after the words to omiss ph = "Il marketing è la funzione organizzativa* che ha il compito di individuare i target* e trovare il modo migliore per soddisfare* i loro bisogni* e desideri in modo profittevole all’interno di un ambiente competitivo*." # do not change this. This deletes the * ph2 = ph.replace("*", "") output(ph)
This is the output
<p>Il marketing è la funzione <b style='color:blue'>o|_|_|a|_|_|_|_|_|_|_|_|a</b> che ha il compito di individuare i <b style='color:blue'>t|_|_|_|e|t</b> e trovare il modo migliore per <b style='color:blue'>s|_|d|_|_|_|_|_|_|e</b> i loro <b style='color:blue'>b|_|_|o|_|_|i</b> e desideri in modo profittevole all’interno di un ambiente <b style='color:blue'>c|_|_|_|_|t|_|_|_|_|o</b>.</p>
That if saves as html gives this output
where you got the omissed words with the starting and ending letter and a ramdom letter shown in the middle too.
Subscribe to the newsletter for updates
Tkinter templates
My youtube channel
Twitter: @pythonprogrammi - python_pygame