This code will generate an html file with words to guess like this:
from random import shuffle, randint, choice from createfile import createfile a = """ ASSEGNO CIRCOLARE L'assegno circolare è un titolo di credito con cui una banca promette di pagare a vista un determinato importo ad un soggetto beneficiario I soggetti sono: emittente, banca che rilascia l'assegno beneficiario, persona a favore della quale viene emesso Deve contenere denominazione di assegno circolare promessa della banca di pagare la somma indicata importo scritto in cifre e lettere beneficiario, persona in favore della quale viene emesso l'assegno; data e luogo di emissione; firma della banca emittente; la clausola di non trasferibilità; numero progressivo dell'assegno; quadro di controllo con cifre da annullare o perforare; cifre in inchiostro magnetico con codice ABI e CAB. Ogni modulo è formato da due parti: madre e figlia. Carta di debito: strumento di pagamento elettronico con cui si possono prelevare contanti presso gli sportelli automatici e regolare acquisti di beni e servizi presso punti di vendita aderenti ad un circuito telematico. Carte di debito: strumenti di pagamento elettronico con cui si possono acquistare beni e servizi presso punti di vendita abilitati pagando l'importo alla metà del mese successivo. Ri.ba.: Servizio bancario di incasso elettronico che consente alle aziende di riscuotere le proprie fatture attraverso le banche. Le cambiali: Sono titoli di credito che contengono la promessa o l'ordine di pagare una somma di denaro a un soggetto, detto beneficiario, a una determinata scadenza e in un luogo indicato. Credito significa: diritto ad esigere una somma di denaro. Titolo di credito significa: documento che incorpora (in cui è scritto il diritto) il diritto ad esigere una somma di denaro. Possedere il titolo significa possedere il diritto. La cambiale è un titolo di credito: astratto: non è indicato il motivo della sua emissione all'ordine: è trasferibile con la girata (ordine scritto sul retro del titolo). formale: è valido se possiede i requisiti previsti dall legge. esecutivo: in caso di mancato pagamento i possessore può svolgere un'azione legale esecutiva nei confronti del debitore per recuperare l'importo spettante. autonomo: il possessore può riscuotere l'importo indipendentemente dalle circostanze che hanno portatao alla sua emissione. letterale: il diritto è definito da quanto scritto nella cambiale. Pagherò: Il pagherò è un titolo di credito che contiene la promessa incondizionata fatta da un soggetto detto emittente, di pagare una somma di denaro a un altro soggetto, detto beneficiario, a una determinata scadenza e in un luogo indicato. I soggetti sono l'emittente e il beneficiario. """ omesse = """ assegno credito beneficiario emittente beneficiario denominazione promessa lettere beneficiario firma trasferibilità progressivo ABI CAB elettronico successivo banche beneficiario emittente soggetti letterale elettronico autonomo incorpora formale legale elettronico astratto successivo ordine promessa beneficiario credito girata """.splitlines() parole = omesse[1:] #shuffle(parole) # per visualizzare le parole #print(parole) # in ordine casuale def crea_lettera_a_caso(tratteggio): # mette una lettera a caso al posto di un _ tratteggio = list(tratteggio) for n in range(int(len(tratteggio)/3)): index_altra_lettera = randint(1,len(mezzo)-1) tratteggio[index_altra_lettera] = mezzo[index_altra_lettera] + " " # ritrasforma in stringa tratteggio tratteggio = "".join(tratteggio) return tratteggio for parola in parole: iniz = parola[0] fin = parola[-1] tratteggio = "_"*(len(parola)-2) mezzo = list(parola[1:-1]) tratteggio = crea_lettera_a_caso(tratteggio) # Aggiunge spazio _ _ _ tratteggio = " " + tratteggio.replace("_", "_ ") a = a.replace(parola, "[ " + iniz + tratteggio + fin + " ]", 1) createfile("omesse.html", a)
And this is the createfile module that we imported above
import os def createfile(filename, content): "Create a file" try: with open(filename, "w", encoding="utf-8") as file: file.write(content) os.system(filename) except: print("You must use an argument for the filename ('prova.html') and another for the content ('<b>Hello</b> World')") def create_file_no_open(f,c): with open(f, "w", encoding="utf-8") as file: file.write(c) def gettext(filename, content): "Create a file" try: with open(filename, "r", encoding="utf-8") as file: file = file.read() return text except: print("File not found") def readtext(filename, content): gettext(filename, content) def append_to_file(filename, content): """Create a file""" try: with open(filename, "a", encoding="utf-8") as file: file.write(content) os.system(filename) except: print("You must use an argument for the filename ('prova.html') and another for the content ('<b>Hello</b> World')") if __name__ == "__main__": creafile("filediprova.html", "<b>Hello</b>World")
Part 1: create a simple missing words test
Part 2: saving the test on html
Part 3: making it interactive
part 4: adding colors and initial and final letter to html file
In the following code I’ve added some changes:
- eliminated the alert
- added a red background for wrong answer
- avoided an error when there are more identical missing words
- added the first and last letter of the missing words
Now the page in the broswer looks like this:
import os from collections import Counter text = """ ASSEGNO CIRCOLARE L'assegno circolare è un titolo di credito con cui una banca promette di pagare a vista un determinato importo ad un soggetto beneficiario I soggetti sono: emittente, banca che rilascia l'assegno beneficiario, persona a favore della quale viene emesso Deve contenere denominazione di assegno circolare promessa della banca di pagare la somma indicata importo scritto in cifre e lettere beneficiario, persona in favore della quale viene emesso l'assegno; data e luogo di emissione; firma della banca emittente; la clausola di non trasferibilità; numero progressivo dell'assegno; quadro di controllo con cifre da annullare o perforare; cifre in inchiostro magnetico con codice ABI e CAB. Ogni modulo è formato da due parti: madre e figlia. Carta di debito: strumento di pagamento elettronico con cui si possono prelevare contanti presso gli sportelli automatici e regolare acquisti di beni e servizi presso punti di vendita aderenti ad un circuito telematico. Carte di debito: strumenti di pagamento elettronico con cui si possono acquistare beni e servizi presso punti di vendita abilitati pagando l'importo alla metà del mese successivo. Ri.ba.: Servizio bancario di incasso elettronico che consente alle aziende di riscuotere le proprie fatture attraverso le banche. Le cambiali: Sono titoli di credito che contengono la promessa o l'ordine di pagare una somma di denaro a un soggetto, detto beneficiario, a una determinata scadenza e in un luogo indicato. Credito significa: diritto ad esigere una somma di denaro. Titolo di credito significa: documento che incorpora (in cui è scritto il diritto) il diritto ad esigere una somma di denaro. Possedere il titolo significa possedere il diritto. La cambiale è un titolo di credito: astratto: non è indicato il motivo della sua emissione all'ordine: è trasferibile con la girata (ordine scritto sul retro del titolo). formale: è valido se possiede i requisiti previsti dall legge. esecutivo: in caso di mancato pagamento i possessore può svolgere un'azione legale esecutiva nei confronti del debitore per recuperare l'importo spettante. autonomo: il possessore può riscuotere l'importo indipendentemente dalle circostanze che hanno portatao alla sua emissione. letterale: il diritto è definito da quanto scritto nella cambiale. Pagherò: Il pagherò è un titolo di credito che contiene la promessa incondizionata fatta da un soggetto detto emittente, di pagare una somma di denaro a un altro soggetto, detto beneficiario, a una determinata scadenza e in un luogo indicato. I soggetti sono l'emittente e il beneficiario. """ missed = """ credito beneficiario emittente denominazione promessa luogo banca trasferibilità """ def print_test(text, missed): """Returns a text without some words replaced by _ _ _""" missed = missed.splitlines() for w in missed[1:]: text = text.replace(w, "_ "*len(w)) return text def interactive_mode(text, missed): """Returns a text without some words replaced by [__________] input text""" missed = missed.splitlines() no_repeat = [] count_words = Counter(missed[1:]) for w in missed[1:]: if w not in no_repeat: no_repeat.append(w) no_repeat.append(w) lenght = str(len(w)+2) underscores = ". "*(len(w)-2) text = text.replace(w, "<input type='text' size=" + lenght + " placeholder='" + w[0] + underscores + w[-1] + "' onchange=\"if(this.value=='" + w + "'){this.readonly=true;this.style.background='yellow'}else{this.style.background='red'}\">", count_words[w]) return text def create_html(text, solution=0): if solution: text += "<br>-------<br>Solutions:<b>" text += missed + "</b>" with open("test.html", 'w', encoding='utf-8') as file: file.write(text) print(text) os.system("test.html") return "File has been written" print(create_html(interactive_mode(text, missed), solution=1))