Forum >> Principianti >> primi passi con python

Pagina: 1

Ciao a tutti. Sono nuovo e ho voglia di imparare. Non sono proprio giovane: da autodidatta ho imparato a programmare in BASIC sul Commodore 64, quindi ho una certa idea di come trasformare i problemi in codice. Ho acquistato un libro per ragazzi: Python per ragazzi di Jason R.Briggs e ci sto dando dentro. Ho Python 3.9 e litigo spesso con l'inglese.


Al momento mi sono venuti un paio di dubbi

1. istruzione print con e senza segnaposto


uno='prima frase'
due='seconda frase'
#con segnaposto

print('stampo la %s e poi la %s' %(uno,due))


# senza segnaposto

print('stampo la '+uno+' e poi la '+due)




entrambi i codici danno come risulatato:


'stampo la prima frase e poi la seconda frase'

la mia domada: entrambe lo modalità sono una alternativa all'altra o cè un motivo specifico per preferirne una rispetto all'altra?




2. istruzione input()

che differenza c'è tra scrivere:

età=int(input('quanti anni hai? ')

print (età)

e

print('quanti anni hai? ')

età=int(sys.stdin.readline())

da principiante la seconda versione mi pare più complicata

Bene, spero di essere preso per mano ed essere accompagnato in questa mia nuova avventura. Grazie

NSantini







Ciao caro, non mi focalizzerei assolutamente su questi problemi che oltretutto non sono neanche problemi veri e propri.

Andrei dritto nell'apprendimento, affidandomi ad un buon testo, ce ne sono tanti e molti di essi sono validi.

Abbiamo una sezione su questo sito, puoi darci un'occhiata. Personalmente sceglierei quello di Mark Lutz, ma confesso di non essere aggiornato con le ultimissime pubblicazioni, magari c'è qualcosa di più aggiornato, visto che comincia ad avere i suoi annetti.

Ah dimenticavo, per print va bene tutto ed esistono anche altri metodi come str.format() o f-strings per dirne due. Fidati se ti dico che all'inizio è una funzione molto importate per i neofiti, ma andando avanti la userai sempre meno fino a sparire completamente dai tuoi script. Su input() il discorso è similare, se all'inizio con i primi esperimenti è molto gettonato, col tempo passarà nel dimenticatoio. I metodi che indichi sono simili, ai fini pratici il secondo legge anche il carattere di escape ed è possibile fornire il numeri di caratteri da leggere alla volta.

Cya
hai scritto "sono neanche problemi veri e propri."

Scusami sono ancora a disturbarti. Da quello che scrivi, vediamo se ho capito il senso: I comandi print e input sono utili per la programmazione classica riga, dopo riga, mentre nella programmazione moderna a oggetti non servono poiché sono gli oggetti stessi con le loro proprietà e metodi che acquisiscono dati (input) o li visualizzano (print). Ok, mi rendo conto. Quindi è necessario usare anche un costruttore di GUI e mi pare di capire che Python ne ha già uno già integrato che sarebbe tkinter.

Ora considerado che conosco (reminescenze del mio bagaglio di programmatore amatoriale*) gli operatori aritmetici, logici e booleani, i comandi di base if, for, while e altri a questo punto mi pare opportuno conoscere tkinter per creare form e arricchirli di textbox, pulsanti, combobox ecc e apprendere anche le caratteristiche di ciascu oggetto. Come mi consigli di procedere? Dove trovo il materiale per utilizzare tkinter?

ciao, ancora grazie

NSantini

* Per piacere, non farti ide errate sul mio conto, tipo: presuntuoso. È che operare con i vari tipi di variabili e con + - * / >=< AND OR è quasi uguale in tutti i linguaggi e anche i cicli for, if e altri comandi sono tutti uguali, cambia la sintassi e questa sì che va studiata e appresa. E su questa mi sto concentrando. Ecco perché chiedevo sulle due tipologie di input

hai scritto "sono neanche problemi veri e propri."
Veramente ho scritto "non sono neanche problemi veri e propri", intendendo che sono perlopiù costrutti sintattici che ti permettono di spaziare e non c'è necessariamente una forma migliore delle altre al punto del tuo percorso di apprendimento, dove non credo tu stia ricercando performance o cose similari.

Scusami sono ancora a disturbarti. Da quello che scrivi, vediamo se ho capito il senso: I comandi print e input sono utili per la programmazione classica riga, dopo riga, mentre nella programmazione moderna a oggetti non servono poiché sono gli oggetti stessi con le loro proprietà e metodi che acquisiscono dati (input) o li visualizzano (print). Ok, mi rendo conto. Quindi è necessario usare anche un costruttore di GUI e mi pare di capire che Python ne ha già uno già integrato che sarebbe tkinter.

Non mi disturbi e no, mi devo essere spiegato male. Ti ho scritto che abbandonerai, ad esempio, l'uso del print() che ora scommetto sia massivo perché vuoi verificare gli esiti dei tuoi script. Lentamente ed inesorabilmente non lo userai più, imparerai che esistono altri metodi come ad esempio i log ed i test per avere un riscontro di quanto fanno i tuoi script. Poi la parte di GUI è ancora un altro discorso, ma non è quello che intendevo in origine.

Ora considerado che conosco (reminescenze del mio bagaglio di programmatore amatoriale*) gli operatori aritmetici, logici e booleani, i comandi di base if, for, while e altri a questo punto mi pare opportuno conoscere tkinter per creare form e arricchirli di textbox, pulsanti, combobox ecc e apprendere anche le caratteristiche di ciascu oggetto. Come mi consigli di procedere? Dove trovo il materiale per utilizzare tkinter?

Non avere dubbi e parti dal tutorial ufficiale, integrato nella documentazione ufficiale.

* Per piacere, non farti ide errate sul mio conto, tipo: presuntuoso. È che operare con i vari tipi di variabili e con + - * / >=< AND OR è quasi uguale in tutti i linguaggi e anche i cicli for, if e altri comandi sono tutti uguali, cambia la sintassi e questa sì che va studiata e appresa. E su questa mi sto concentrando. Ecco perché chiedevo sulle due tipologie di input

Ma perché mai dovrei farmi quest'idea su di te, figurati. Comunque nel caso tu non sappia come muoverti, per questo ed altri problemi, tieni sempre presente che Python ha delle linee guide (PEP) e che ha dei documenti ufficiali ai quali ispirarti.

Cya
Non è questione di "essere presuntuosi"... quando si studia capita a tutti di soffermarsi su aspetti particolari, magari un po' bizzarri, magari secondari, e chiedersi... perché è così?... perché così e non cosà?... eccetera.


E c'è sempre una risposta (ovviamente!)... ma di solito non è che la risposta serva a molto, finché uno non ne sa un po' di più. Devi aver semplicemente pazienza, aspettare di avere un'idea più complessiva del linguaggio, aver letto un bel po' di codice in giro, aver fatto l'abitudine a come si fanno certe cose... allora anche queste risposte avranno più senso e rientreranno in un contesto più comprensibile per te.


Per esempio, prendi il tuo primo dubbio: che differenza c'è tra
>>> s = "%s %s" % ("ciao", "mondo")
>>> s
'ciao mondo'
>>> s = "ciao " + "mondo"
>>> s
'ciao mondo'
Nessuna ovviamente. Ma le interpolazioni di stringa ti consentono di fare cose più raffinate, come tener conto dei tipi... te ne accorgi se provi a fare
>>> s = "Mi chiamo %s e ho %i anni" % ("Marco", 18)
>>> s
'Mi chiamo Marco e ho 18 anni"
>>> s = "Mi chiamo " + "Marco" + " e ho " + 18 + " anni"
TypeError: can only concatenate str (not "int") to str
OPS!


Ora, questa è la risposta alla tua domanda. Ti "serve", adesso, questa risposta? Francamente no. Studia le concatenazioni di stringa (con il "più"), studia le interpolazioni di stringa (con il "percento") e vedrai che poco per volta, man mano che ti abitui a usare queste cose, e man mano che le vedi usate nel codice altrui che leggi, capirai e riuscirai ad apprezzare la differenza.





E per la tua seconda domanda... ci sono differenze sottili tra "input" e "sys.stdin.readline"... anche qui, discorsi noiosi. Usa "input" e vedrai che quando verrà il momento in cui dovrai usare l'altro, lo saprai.















Pagina: 1



Esegui il login per scrivere una risposta.