[Python] Fine del mio primo programma

2014-09-30 Per discussione Andrea Congiu
Buon giorno lista, ho terminato il mio primo codice il quale funziona
come volevo.

Se avete voglia potete dagli un'occhiata? Desidererei dei suggerimenti
su come renderlo più leggibile e ordinato
su come potrei ottimizzarlo con funzioni più avanzate e, non intendo una
riscrittura del codice da parte vostra ma una cosa tipo: il while alla
riga x potresti sostituirlo con ... (mi basta lo spunto poi la studierei
io per imparare cose nuove).

Breve descrizione del:

Il programma permette l'inserimento di alcuni parametri, ne controlla
che rientrino in determinati range e controlla che il tipo di carattere
sia quello giusto. Finiti gli input fa delle conversioni e gli stampa a
monitor. I valori inseriti e calcolati gli infila in un db SQL e apre
una pagina internet di una mappa e posiziona il punto delle coordinate.

Scritto con Python 3 su linux mint 17

Grazie

saluti

andrea
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import datetime
import sqlite3
import webbrowser
import urllib.request
import urllib.error
import socket

# ## Definisco le funzioni #

# Funzione per pulire la Bash dalle scritte e dai valori immessi, così facendo avrò a monitor solo il riepilogo e le conversioni
def pulisci():
 os.system(clear)
pulisci()

# Funzione per lasciare 2 righe vuote -- Questa è una funzione ricorsiva in quanto richiama se stessa --
def vuote(n):
print(os.linesep * n)

# --  Fine della definizione delle funzioni-

vuote(2)


#  Definisco le variabili fisse 

data = today = datetime.date.today()
ora = 0  # Trovare il modo di memorizzare l'ora attuale
GPSMapDatum = WGS-84
Meridiano = Greenwich

#  Fine della definizione delle variabili fisse 

# Messaggio iniziale stampato a monitor; \n scrive ciò che segue nella riga sottostante
print(Questo codice permette all'utente di convertire delle coordinate geografiche espresse in Gradi Primi e Secondi\nnelle due notazioni: Gradi e Primi e Gradi\nCrea i seguenti standard:stringa NMEA che è lo standard delle unità GPS riceventi\nstandard Web per aprire la mappa di Google e lo standard digiKam\nI valori digitati e quelli calcolati saranno inseriti in un data base SQL nominato coordinate.db)
vuote(2)


#  Inserimento e controllo tramite input dei parametri delle coordinate geografiche 

#  Inserimento del nome e della descrizione 
print(\033[33m Inserisci i valori che il programma ti chiederà \033[0m)
print()

nome = input(Inserisci un nome per le coordinate geografiche (massimo 15 caratteri): )
conta_nome = len(nome)
while conta_nome not in range(16):
print(\033[36m ATTENZIONE --- Valore non consentito - massimo 15 caratteri --- ATTENZIONE\033[0m)
print()
nome = input(Inserisci un nome per le coordinate geografiche (massimo 15 caratteri): )
conta_nome = len(nome)
print()

descrizione = input(Inserisci una breve descrizione per le coordinate geografiche (massimo 40 caratteri): )
conta_descrizione = len(descrizione)
while conta_descrizione not in range(41):
print(\033[36m ATTENZIONE --- Valore non consentito - massimo 40 caratteri --- ATTENZIONE\033[0m)
print()
descrizione = input(Inserisci una breve descrizione per le coordinate geografiche (massimo 40 caratteri): )
conta_descrizione = len(descrizione)
print()

# --- Inserimento dei riferimenti e dei valori delle coordinate geografiche (latitudine) ---
print(Valori di Latitudine)
print()

GPSLatitudeRef = input(Inserisci il riferimento della Latitudine; N=Nord S=Sud: )
GPSLatitudeRef = GPSLatitudeRef.upper()
while GPSLatitudeRef not in (S, N):
print(\033[36m ATTENZIONE --- Valore non consentito --- ATTENZIONE\033[0m)
print()
GPSLatitudeRef = input(Inserisci N per Nord oppure S per Sud: )
GPSLatitudeRef = GPSLatitudeRef.upper()

# Questo ciclo permette l'inserimento dei gradi di latitudine e ne controlla che lo stesso sia all'interno di un range e che sia un numero e non una lettera
while True:
try:
lat_g = int(input(Inserisci i gradi di latitudine; con un valore compreso tra 0 e 90: ))
while lat_g not in range (91):
print(\033[36m ATTENZIONE --- Valore non consentito --- ATTENZIONE\033[0m)
print()
lat_g = int(input(Inserisci i gradi di latitudine; con un valore compreso tra 0 e 90: ))
break
except ValueError:
print(\033[36m ATTENZIONE --- Valore non consentito --- Inserisci solo numeri da 0 a 90 --- ATTENZIONE\033[0m)
print()

# Questo ciclo permette l'inserimento dei primi di 

Re: [Python] Fine del mio primo programma

2014-09-30 Per discussione Fabrizio Soppelsa

On 09/30/2014 01:43 PM, Andrea Congiu wrote:

Buon giorno lista, ho terminato il mio primo codice il quale funziona
come volevo.

Se avete voglia potete dagli un'occhiata? Desidererei dei suggerimenti
su come renderlo più leggibile e ordinato


Se ci tieni alla leggibilita', per compatibilita' con i terminali 
potresti cominciare con il limitare la lunghezza delle righe a 79 char: 
http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length


Se scrolli in alto questa pagina, potrai iniziare anche a leggere le 
raccomandazioni per lo stile.


-FS.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Fine del mio primo programma

2014-09-30 Per discussione Manlio Perillo
2014-09-30 12:24 GMT+02:00 Fabrizio Soppelsa fsoppelsa...@yandex.com:

 On 09/30/2014 01:43 PM, Andrea Congiu wrote:

 Buon giorno lista, ho terminato il mio primo codice il quale funziona
 come volevo.

 Se avete voglia potete dagli un'occhiata? Desidererei dei suggerimenti
 su come renderlo più leggibile e ordinato



Il suggerimento principale è di definire una funzione per ciascun compito.
Il secondo suggerimento è di separare la interfaccia utente dalla logica
del programma.

1) scrivi del codice per convertire delle coordinate (da stringa) nel
formato interno
che ti risulta più comodo.
Questo può essere una classe o più semplicemente una named tuple, con i
gradi,
primi e secondi

2) scrivi una funzione per validare che le coordinate siano valide
(questa parte la puoi anche integrare in 1)

3) scrivi delle funzioni per la conversione dal tuo formato interno a
quelli esterni

4) scrivi una funzione per l'inserimento dei dati nel database

5) implementa la UI

La parte più complessa è il parsing delle coordinate, perchè ci sono molte
alternative.
La soluzione va scelta tra quella che permette di ridurre la duplicazione
del codice e avere una buona gestione degli errori, che vanno segnalati
all'utente.

 [...]

Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python