Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - RicPol

Pagine: [1] 2 3 ... 223
1
Base / Re:(int).tobytes
« il: Oggi alle 19:36 »
si beh... poi se ti serve avere un riscontro visivo di quello che hai dentro i tuoi bytes, e vuoi una rappresentazione più "fedele" che non si metta a stampare caratteri random, puoi sempre castare a hex, byte a byte:

>>> b = (72).to_bytes(2, 'big')
>>> b
b'\x00H'
>>> [hex(i) for i in b]
['0x0', '0x48']

2
Base / Re:(int).tobytes
« il: Oggi alle 14:53 »
Uhm, beh per prima cosa mi sembra inutile reinventare la ruota: esistono int.to_bytes e int.from_bytes per queste cose: https://docs.python.org/3/library/stdtypes.html#int.to_bytes

Dopo di che... beh, è la tabella dei codici ASCII... quando la tua stringa di bytes becca il codice di un carattere stampabile, il repr() implicito che fai quando la visualizzi nella console finisce per stamparti quel carattere. E del resto, hai provato a fare

>>> for i in range(65, 91):
    print(i, i.to_bytes(2, 'big'))

65 b'\x00A'
66 b'\x00B'
67 b'\x00C'
68 b'\x00D'
69 b'\x00E'
70 b'\x00F'
71 b'\x00G'
72 b'\x00H'
73 b'\x00I'
74 b'\x00J'
75 b'\x00K'
76 b'\x00L'
77 b'\x00M'
78 b'\x00N'
79 b'\x00O'
80 b'\x00P'
81 b'\x00Q'
82 b'\x00R'
83 b'\x00S'
84 b'\x00T'
85 b'\x00U'
86 b'\x00V'
87 b'\x00W'
88 b'\x00X'
89 b'\x00Y'
90 b'\x00Z'

non proprio il risultato che ti aspettavi? Però non preoccuparti, è solo la rappresentazione visibile dell'oggetto a essere "strana", ma il valore dell'oggetto in sé è corretto, dentro.

3
Base / Re:(int).tobytes
« il: Oggi alle 12:15 »
per favore formatta il codice python nel post con l'apposito pulsante "pythoncode"

4
dipende da cosa e come misuri. Invece di inventare dei tempi a caso, facci vedere il codice...

5
Base / Re:Usare property per gli attributi di classe
« il: Gennaio 27, 2020, 16:35 »
Detto questo, effettivamente sì, potrei creare delle classi "Phoneme" con un attributo per la comparazione; rimane però il fatto che l'utente dovrebbe poter specificare secondo quale ordine alfabetico vuole che i fonemi siano sistemati. Non tutte le lingue africane sono standardizzate, ma quelle che lo sono hanno un ordine alfabetico che vogliono seguire.
Certo, l'utente istanzierà i suoi simboli, ciascuno con il "valore di ordinamento" corretto. Oppure, tu fornirai degli "alfabeti" predefiniti, ovvero delle collezioni di simboli (istanze già pronte della tua classe) con i valori di ordinamento già pronti. Oppure, tu fornirai degli alfabeti e l'utente potrà personalizzarli. Quel che vuoi.
Resta il fatto che, da un punto di vista tecnico, se il tuo problema è "ordinare oggetti che non hanno un ordine naturale evidente", allora questo è un modo per farlo.

Detto questo, boh... mi sembra ancora confuso (sicuramente per me). Voglio dire, tu puoi anche definire dei tuoi "fonemi" in linea di principio... resta però il fatto (o almeno, così mi pare) che questi fonemi:
- o sono già dentro l'IPA, a allora hanno un loro simbolo Unicode,
- oppure non hanno un simbolo Unicode e allora la tua classe dovrà fare un bel po' di lavoro, altro che "ordinamento"... in pratica devi estendere Unicode... cosa possibile, ci mancherebbe... comunque di problemi ne hai.
Ma se puoi usare i glifi di Unicode per i simboli IPA, e vuoi solo creare degli "alfabeti" (cioè dei sotto-insiemi) personalizzati con degli ordini personalizzati, allora questo protrebbe essere un modo. (poi oddio, fossi in te cercherei con cura di capire se ci sono strade "ufficiali" per ordinare in modo diverso dall'algoritmo standard di Unicode... non ci ho mai pensato...)

Detto questo, una googlatina preliminare sul problema "Python / IPA / Unicode" me la farei comunque. Per esempio potresti studiarti il codice di questo https://github.com/dmort27/epitran oppure questo https://github.com/pettarin/ipapy (che tra l'altro è italianissimo...) e predere degli spunti anche se non è precisamente quello che vuoi fare tu...

6
Base / Re:Usare property per gli attributi di classe
« il: Gennaio 27, 2020, 13:11 »
Mah... qui il mistero si infittisce, mi sa.
Dividiamo il problema in due problemi, ok?

Prima di tutto, mi sembra di capire, tu stai cercando un metodo per collazionare oggetti arbitrari in python... questo a prescindere dal tuo dominio applicativo (modellazione di fonemi).
Ora, di solito i casi sono due: nel primo caso, i tuoi oggetti hanno uno o più attributi interni che sono collazionabili secondo regole già esistenti. Per esempio, una classe "Person" potrebbe avere un attributo "Person.name", e tu potresti semplicemente collazionare gli oggetti Person secondo il loro attributo "name" (in parole povere, ordini le persone per nome).
Nel secondo caso, la classe non ha attributi interni che siano collazionabili (o comunque, collazionabili in modo sensato per il tuo dominio applicativo). E questo mi sembra essere il tuo caso... (cioè, in realtà NO..., ma te lo dico più tardi, per adesso andiamo avanti). In casi del genere, siccome in pratica non esiste un modo "naturale" di collazionare gli oggetti, tanto vale inventarsene uno arbitrario. Semplicemente aggiungi un attributo (un numero, la cosa più facile) alla tua classe, e collaziona secondo quel numero. Qualcosa come:

>>> class Foo:
        def __init__(self, label, cmpval):
            self.label= label # giusto qualcosa per distinguere le istanze tra loro...
            self._cmpval = cmpval

        def __lt__(self, other): return self._cmpval < other._cmpval
        def __le__(self, other): return self._cmpval <= other._cmpval
        def __eq__(self, other): return self._cmpval == other._cmpval
        def __gt__(self, other): return self._cmpval > other._cmpval
        def __ge__(self, other): return self._cmpval >= other._cmpval

        def __repr__(self): return self.label

>>> a = Foo('first', 10)
>>> b = Foo('second', 20)
>>> c = Foo('third', 30)
>>> a < b
True
>>> c < a
False
>>> [repr(i) for i in sorted([c, a, b])]
['first', 'second', 'third']

E questo è quanto. Una buona idea sarebbe istruire gli utenti a dare dei "cmpval" ben distanziati tra loro (tipo 10, 20, 30 etc) in modo da poter inserire pezzi mancanti in futuro senza dover rifare tutto l'ordine. Mi sembra tutto piuttosto semplice. Quello che non capisco è come sei arrivato ad arrampicarti nelle metaclassi, property, attributi di classe, __prepare__ e tutta la ferramenta assortita...


Poi c'è il secondo problema, quello del tuo specifico dominio applicativo (modellare fonemi). Ora, qui io non sono un esperto, e magari tu invece sì... e mi scuso in anticipo se sto per dire cavolate ma... A me sembra che prima di tuffarsi in un progetto del genere dovresti vedere che cosa c'è in giro... perché i linguaggi umani non mi sembrano proprio un campo poco esplorato, a dirla tutta.
Ora, tu dici "fonemi", e va bene... ma in realtà se poi qualcuno vuole studiare i fonemi finirà per doverli trascrivere da qualche parte... quindi ho l'impressione che i tuoi oggetti "fonema" in realtà dovranno pur contenere una rappresentazione grafica del fonema... e se ogni fonema deve avere una rappresentazione grafica diversa... non è che qualcuno ha GIA' FATTO una cosa che potrebbe chiamarsi "alfabeto fonetico internazionale"... e in effetti si chiama proprio così...? https://en.wikipedia.org/wiki/International_Phonetic_Alphabet
E questo alfabeto fonetico, non sarà GIA' COMPRESO nei glifi mappati da Unicode? Forse... sì https://en.wikipedia.org/wiki/Phonetic_symbols_in_Unicode
E Unicode, a sua volta, non si sarà GIA' posto il problema di come fare a collazionare i suoi glifi? Scommetto che si è già posto il problema in effetti https://en.wikipedia.org/wiki/Unicode_collation_algorithm
Ora, naturalmente tu potresti trovarti a voler *estendere* l'alfabeto fonetico... oppure ci sono simboli di questo alfabeto che non sono inclusi in Unicode... oppure puoi trovare "sbagliato" il modo in cui Unicode ordina i simboli di questo alfabeto... Non so, e ripeto non sono un esperto... Ma mi chiedo se tu sia proprio nel caso specifico in cui è necessario ripartire da zero e reinventare la ruota. Anche perché poi suppongo che i linguisti nel loro lavoro già utilizzano gli strumenti standard (IPA, Unicode...) che già esistono... quindi non so dove si collocherebbe di preciso la libreria che stai scrivendo... Ma ripeto, qui stiamo andando oltre il mio campo di esperienza.

7
Altri linguaggi / Re:importre dll win c++ in python come modulo
« il: Gennaio 26, 2020, 21:09 »
beh, con pybind, suppongo... https://pybind11.readthedocs.io/en/latest/basics.html#creating-bindings-for-a-simple-function e tutto il resto della documentazione...

8
Base / Re:Usare property per gli attributi di classe
« il: Gennaio 26, 2020, 20:58 »
Non... sono sicuro di questa cosa... per niente...
prima di tutto non sono sicuro di quello che stai cercando di fare, anzi non l'ho capito per niente.
poi non sono sicuro dello stackoverflow che hai linkato, che è una roba che risale a 11 anni fa, con una sintassi python 2... sulla quale non sono sicuro perché è da anni che non uso python 2 e non saprei più ricostruire che cosa è cambiato.
Ora, a me sembra che ben poco impedisca di usare una property davanti a un attributo di classe... e infatti la cosa che non capisco è perché non ti va bene semplicemente fare

>>> class Foo:
_val = 42

@property
def val(self):
return self._val

@val.setter
def val(self, x):
self._val = x


>>> f = Foo()
>>> f.val
42
>>> f.val = 12
>>> f.val
12
>>> Foo.val = 1000
>>> f.val
1000

che è come mi sembra si debba comportare un normale attributo di classe, solo che tu ci hai messo davanti un getter e un setter e una property. Boh, poi se vuoi passare da una metaclasse, non so... immagino... Però il tuo codice (che ho solo guardato in 4 secondi netti, eh) sembra incredibilmente complicato e anche... non so, "sbagliato", nel senso che per esempio non ho mai visto fare @classmethod su un __prepare__... ma ha senso? boh, ma non sono un grande esperto di queste cose... sono magia nera che lascio fare a framework come Django.
In sostanza ho la vaga sensazione che tu ti sia avvitato in un labirinto di complicazioni partendo da un'idea semplice... ma appunto non riesco a capire qual era la tua idea di partenza. E non riesco a sbrogliare le complicazioni successive.

9
Base / Re:Estrarre da un file di testo solo i numeri.
« il: Gennaio 26, 2020, 11:41 »
Beh no, invece dovresti scrivere il parser per esercizio, anche se nel tuo caso specifico adesso forse non ti serve. Imparare a programmare vuol dire esplorare possibilità, non risolvere problemi particolari.

10
Base / Re:Estrarre da un file di testo solo i numeri.
« il: Gennaio 25, 2020, 23:23 »
E' molto semplice scrivere un piccolo parser che scandisce carattere per carattere e sputa fuori i numeri trovati. Ma se hai i numeri in una posizione fissa, allora questo è un vincolo più forte e ti conviene approfittarne. Probabilmente va bene come stai facendo. Un parser potrebbe pescare altri numeri sparpagliati nel tuo testo senza che tu te ne accorga. E per confinarlo ai numeri nelle posizioni volute, dovresti aggiungere della logica... che ti riporterebbe in pratica al punto in cui già sei adesso.

11
Non avrebbe probabilmente nessun senso. Puoi, beninteso, costruirti un timer e "lanciare" queste operazioni a intervalli regolari, ovviamente su thread di esecuzione diversi in modo che non blocchino il thread del timer. Ma in generale il sospetto è che stai cercando di fare una cosa nel modo sbagliato.

12
se vuoi "trasferire un array da una funzione all'altra", fai restituire quell'array (che poi, immagino vorrai dire una lista) da una funzione e passalo come parametro per l'altra. Se vuoi comunicare tra due processi, usa una pipe per esempio.

13
non si capisce quello che intendi dire. Però, se una soluzione è più veloce dell'altra, non ti resta che usare quella.

14
Progetti e script / Re:Creare una Sitemap con python
« il: Gennaio 16, 2020, 15:22 »
è possibile, ma non è un esercizio affrontabile nei primi sei/otto mesi di apprendimento.

15
Database / Re: database sqlite aggiornare valori
« il: Gennaio 13, 2020, 21:40 »
Boh a parte che non si capisce niente di come ti esprimi... ma direi, discrimina nel callback a seconda di quello che vuoi fare.

Qui guarda che però si pone un problema a monte. Il prerequisito per scrivere un programma è imparare a programmare. I post su un forum non possono sostituire un corso di programmazione. Si scrive su un forum per chiedere dritte su tecniche particolari, cose così.

Quindi la vera domanda è: quale libro di programmazione stai seguendo passo-passo in questo momento, esattamente? E dove sei arrivato?

Pagine: [1] 2 3 ... 223