[Python] Selezionare voci da un dizionario con casualità pesata.
Gabriele Battaglia
iz4apu a libero.it
Ven 30 Set 2022 19:25:15 CEST
Reply to the Carlos Catucci's message, wrote on 30/09/2022 at 19:12:
>
>
> On Fri, 30 Sept 2022 at 18:33, Gabriele Battaglia <iz4apu a libero.it
> <mailto:iz4apu a libero.it>> wrote:
>
> Ho risolto.
> Se serve, posto il codice.
>
>
> E' sempre interessante vedere come un dev risolve un algoritmo, se ti va
> di postarlo a me farebbe piacere vederlo
>
Certo Carlos.
E' talmente breve che lo posto tutto, scusandomi se faccio qualcosa di
non gradito o se la formattazione si perde.
E' un programma che genera dei finti call radioamatoriali che io poi
invio agli amici che sto allenando in telegrafia affinché li
decodifichino ad orecchio.
La materia è un po di settore, se quanto ho scritto ti risulta oscuro,
non preoccuparti, è normale! :) Sono io ad avere interessi fuori
standard. Ahahahaha.
Ecco il codice.
***
# QRZ - Programma che crea calls inventati e numeri progressivi, da
usare negli esercizi CW
# Data concepimento 30/9/2022 by IZ4APU.
import random
from string import ascii_uppercase, digits
from GBUtils import key
MDL={'a0a':4,
'a0aa':6,
'a0aaa':15,
'aa0a':6,
'aa0aa':18,
'aa0aaa':36,
'0a0a':2,
'0a0aa':2,
'0a0aaa':2,
'a00a':3,
'a00aa':3,
'a00aaa':4}
# Carlos, questo è il dizionario con i modelli dei calls e la
percentuale di probabilità che vengano estratti a sorte.
# La prossima def poi si preoccupa di sostituire le "a" con lettere
casuali e gli "0" con numeri casuali.
def Mkdqrz(c):
q=''
c=c[0]
for j in str(c):
if j.isdigit():
q+=random.choice(digits)
else:
q+=random.choice(ascii_uppercase)
return q
print("QRZ 1.0. crea calls e numeri progressivi per esercitarsi in
CW\nBy IZ4APU - Gabriele Battaglia.\nQualsiasi tasto per procedere, ESC
per terminare.")
cont=1
while True:
c=random.choices(list(MDL.keys()), weights=MDL.values(), k=1)
qrz=Mkdqrz(c)
pgr=random.randint(1,9999)
prompt=f"- {cont:0>4} {qrz} 5nn {pgr:0>4}"
wait=key(msg=prompt)
# key è una utility mia che interroga la tastiera e ritorna il tasto
quando lo hai premuto.
print()
if ord(wait)==27: break
cont+=1
print("Bye-Bye & 73. de IZ4APU Gabe")
Maggiori informazioni sulla lista
Python