Re: [Python] È Off-Topic ma devo dirvelo...
> On 24 Dec 2016, at 23:06, Ivo Reanowrote: > > Mi unisco volentieri all'[OT]. > Auguri a tutti! Buon Natale and Happy New Year (e Python 3.6 !) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] È Off-Topic ma devo dirvelo...
Mi unisco volentieri all'[OT]. Auguri a tutti! ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] È Off-Topic ma devo dirvelo...
...buon natale e felice anno nuovo a tutti i membri della lista! Che possiate passare un sereno Natale e che il 2017 possa portarci salute, lavoro, soldi e grandi soddisfazioni ^__^ ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Ordine di calcolo Dove sbaglio
grazie per i preziosi consigli in effetti era un esercizio, non avendo mai scritto qualcosa l'ho buttata lì effettivamente non ho codificato lo zero.. opss Gianmaria B. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Ordine di calcolo Dove sbaglio
2016-12-24 9:40 GMT+01:00 Andrea D'Amore: > Ovviamente se è davvero una conversione da esadecimale a intero e non > un esercizio conviene usare int(numero, base=16) . In effetti rileggendo il messaggio originale credo che sia proprio quest'ultimo caso, pensavo avessi dimenticato un += nella riga di assegnazione di Risultato ma ora credo tu volessi solo stampare la conversione della cifra in corso, e non ti interessi affatto la conversione di tutto il numero. -- Andrea ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Ordine di calcolo Dove sbaglio
2016-12-24 8:09 GMT+01:00: > dove sta l'errore […] > ma non fa i conti che mi aspetto Secondo me l'errore è nel non indicare il risultato che ti attendevi e quello che hai avuto invece. L'idea è che nello scrivere "mi aspettavo 13*16^2 + 14*16 + 2 mentre ho avuo 13*16^3 + 14*16^2 + 2*16" probabilmente ti accorgi da solo del problema. Vedi l'howto "How to ask questions the smart way" di Eric Raymond, "Getting answers" di Mike Ash che è considerata una alternativa migliore perché molto meno supponente e "SSCCE". A parte questo il problema col codice (stile a parte) è che usi len(), l'approccio a indici è poco idiomatico e in genere python ha una soluzione considerata più "elegante", in questo caso enumerate(numero_esadecimale) ti restituirà ad ogni iterazione le coppie (indice, cifra) ma la cifrà più significativa avrà indice zero perché è all'inizio della stringa. Piuttosto che calcolare il complemento alla lunghezza della stringa conviene la funzione builtin reversed. Inoltre ricorda che le liste sono iterabili, non serve trasformarle in lista prima di eseguirci un ciclo sopra. Quindi tralasciando l'assegnazione di Dizionario (base 16 o base 17 che si voglia) >NumeroEsadecimale = 'DE2' >NumEsadInLista = list(NumeroEsadecimale) >LunghezzaLista= len(NumEsadInLista) > >for i in NumEsadInLista: Risultato=Dizionario[i]*16**LunghezzaLista LunghezzaLista=LunghezzaLista-1 diventa numero_esadecimale = 'DE2' risultato = 0 for index, digit in enumerate(reversed(numero_esadecimale)): risultato += dizionario[digit] * (16 ** index) che mi sembra più chiaro, anche come assegnazione dei nomi (tu usi "lunghezzalista" come contatore a scalare ma in realtà la lunghezza della lista non sta certo cambiando). Dato che il loop è uno one-liner puoi usare una generator expression ed evitare anche l'inizializzazione di risultato applicandogli sum(): numero_esadecimale = 'DE2' risultato = sum(dizionario[d] * (16 ** i) for i, d in enumerate(reversed(numero_esadecimale))) Ovviamente se è davvero una conversione da esadecimale a intero e non un esercizio conviene usare int(numero, base=16) . -- Andrea ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Ordine di calcolo Dove sbaglio
Il 24 dicembre 2016 08:32, Gollum1ha scritto: > I numeri esadecimali sono da 0 a F, tu hai messo anche G. Ma il problema maggiore non è tanto la presenza di 'G' che potrebbe andare bene per eventuali numeri in base diciassette, è la mancanza dello zero che è un elemento fondamentale nella notazione posizionale dei numeri. Sempre per restare nell'esercizio, trasforma l'algoritmo in una funzione in modo da poterla chiamare con un'istruzione di questo genere: print(esa2dec('d0e2')) per controllare se il risultato è corretto puoi usare: print(int('d0e2', 16)) Che di sicuro fa i calcoli giusti. Buon natale a tutti. -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python