Python

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
bertolottipf
Linux 0.x
Linux 0.x
Messaggi: 86
Iscritto il: mar 29 mar 2005, 0:00
Località: prov. Torino
Contatta:

Python

Messaggio da bertolottipf »

Ho da un po' inizato a dedicarmi a python con l'intento di creare qualche bel programma.

Dato che vidi, se ricordo bene, sotto Debian un programma, probabilmente fatto in C, che dato il numero in cifre lo restituiva in lettere, ho deciso di provare a farne uno simile in python. Voi come l'avreste fatto.

A dirla tutta, lo scopo finale dell'appendimento di Python è quello di creare un programma (Encyusic, così l'ho chiamato) che gestisca un DB semplicistico in MySQL, diviso in due tabelle. Mi sto dedicando alla tabella 'testcanzone' che è così divisa:

id
titolo
cantante
testo_orig
testo_trad

suppongo non sia il caso che io scriva tutte le specifiche.
Il problema nell'inserimento si presenta al 'testo_orig' in quanto non ho il diritto di fare ritorno a capo.
Come risolvereste tale problema?

Avatar utente
touchstyle
Linux 4.x
Linux 4.x
Messaggi: 1085
Iscritto il: gio 13 mag 2004, 0:00
Slackware: 12.1
Kernel: 2.6.27
Desktop: KDE
Località: Portogruaro [VE]
Contatta:

Messaggio da touchstyle »

Devi convertire il "ritorno a capo" in MySql, dovrebbe essere sempre il \n ma non ci giurerei...

bertolottipf
Linux 0.x
Linux 0.x
Messaggi: 86
Iscritto il: mar 29 mar 2005, 0:00
Località: prov. Torino
Contatta:

Messaggio da bertolottipf »

Uhm... Sì, già, forse... Ma mi par proprio di sì.
Il problema è che questo modo di crivere il programma, che vedi sotto, traduce già tutti i caratteri
per esempio, per scivere l'apice, scrivi ' e non \' come faresti. In questo modo non riesci a rimpiazzare il ritorno a capo no un carattere simile. :(

#! /usr/bin/env python

import os
#import shelve
import MySQLdb

x= 'n'
messaggio="* * * EncyMusic * * *"
spaz=" "
"""testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()"""

while x!= "u":
os.system('clear')
print messaggio
print " i: info"
print " t: tesi musicali"
print " e: enciclopedia musicale"
print " u: uscita"
print "+t: aggiunta al DB testi musicali"
print "-t: eliminazione dal DB testi musicali"
print "+e: aggiunta al DB enciclopedia musicale"
print "-e: eliminazione dal DB testi musicali"
x = raw_input(">")
if x in ("i", "I"):
os.system('clear')
print messaggio
print "VERSIONE: 0.0.1"
print "PRODUZIONE: Paolo Francesco Bertolotti"
print "EDITOR: Emacs/ Kwrite 4.4"
k = raw_input(">")
elif x in ("t", "T"):
os.system('clear')
print messaggio
print "s: stampa tutto il DB"
print "t: cerca per titolo"
print "c: cerca per cantante(/gruppo)"
print "g: cerca generale"
print "i: indice"
k = raw_input(">")
if k in ("s", "S"):
os.system('clear')
print messaggio
print "TUTTI I TESTI"
testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()
ctesti.execute("""SELECT titolo, cantante, testo_orig, testo_trad FROM testicanzone""")
rec = ctesti.fetchall()
for i in rec:
print 'Titolo: ' + i[0] + \
'\nCantante: ' + i[1] + \
'\nTesto originale: ' + i[2] + \
'\nTesto tradotto: ' + i[3] + \
'\n\n---\n\n'
dsf = raw_input(">")
elif k in ("t", "T"):
os.system('clear')
print messaggio
print "RICERCA PER TITOLO"
t = raw_input(">")
dsf = raw_input(">")
elif k in ("c", "C"):
os.system('clear')
print messaggio
print "RICERCA PER CANTANTE"
c = raw_input(">")
dsf = raw_input(">")
elif k in ("g", "G"):
os.system('clear')
print messaggio
print "RICERCA GENERALE"
g = raw_input(">")
dsf = raw_input(">")
elif k in ("i", "I"):
os.system('clear')
else:
os.system('clear')
elif x in ("e", "E"):
os.system('clear')
print messaggio
print "e"
k = raw_input(">")
elif x in ("+t", "+T"):
os.system('clear')
print messaggio
print"Che canzone vuoi aggiungere?"
tit = raw_input("Titolo? ")
cant = raw_input("Cantante? ")
test_o = raw_input("Testo originale? ")
test_t = raw_input("Testo tradotto? ")

testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()
ctesti.execute('INSERT INTO testicanzone (titolo, cantante, testo_orig, testo_trad) VALUES(%s, %s, %s, %s)', (tit, cant, test_o, test_t))

dsf = raw_input(">")
elif x in ("-t", "-T"):
os.system('clear')
print messaggio
print "Che canzone vuoi eliminare? "
tit=raw_input("Titolo? ")
cant=raw_input("Cantante? ")
testo=raw_input("Testo? ")
dsf = raw_input(">")
elif x in ("+e", "+E"):
os.system('clear')
print messaggio
elif x in ("-e", "-E"):
os.system('clear')
print messaggio
else:
os.system('clear')

os.system('clear')
print "Grazie per aver provato il mio programma"

Ritorno a capo o non ritorno a capo! Questo è il problema!!!
CIAO!

Avatar utente
touchstyle
Linux 4.x
Linux 4.x
Messaggi: 1085
Iscritto il: gio 13 mag 2004, 0:00
Slackware: 12.1
Kernel: 2.6.27
Desktop: KDE
Località: Portogruaro [VE]
Contatta:

Messaggio da touchstyle »

Usando php, per convertire gli accapo di un testo proveniente da un DB MySql, utilizzo la funzione nl2br(),che converte gli a capo \n in <br/>.
In Mysqli gli a capo sono proprio i caratteri:

Codice: Seleziona tutto

\n
, è questo lo standard dei sistemi *nix, mentre in Windows dovrebbe essere

Codice: Seleziona tutto

\r\n
.
Spero di esserti stato utile.

Ciao,
Touch.

Avatar utente
touchstyle
Linux 4.x
Linux 4.x
Messaggi: 1085
Iscritto il: gio 13 mag 2004, 0:00
Slackware: 12.1
Kernel: 2.6.27
Desktop: KDE
Località: Portogruaro [VE]
Contatta:

Messaggio da touchstyle »

Dimenticavo due cose:

-1) Posta il tuo problema anche su http://www.nogood.it/prog/, è un forum di programmatori, gente in gamba (amici di Slacky :wink: ).

-2) Sto leggendo "Pensare da informatico", un ottimo manuale su Python e programmazione in generale, lo puoi trovare qui : http://web.econ.unito.it/terna/infsimec ... nk_ita.pdf ma anche da altre parti...

Ciao,
Touch.

Rispondi