Topic: Andare a capo  (Letto 175 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Vendrick

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Andare a capo
« il: Aprile 28, 2020, 11:32 »
Buongiorno a tutti
Ho appena iniziato ad imparare il linguaggio Python (il mio primo linguaggio) tramite libri e corsi online, per cui non voletemi male se la domanda è così stupida, ma non riesco ad andare a capo. Cioè, non intendo dire che non riesco a scrivere un codice su più righe (lo so che si può usare la virgola oppure \), ma che se scrivo un codice alcuni elementi vanno messi su righe separate. Ad esempio, se io scrivo "import speedtest" e clicco Invio per andare a capo e scrivere il resto del codice il programma interpreta come Run code, ed è ovviamente incompleto.
Ho provato a scrivere tutto il codice sul Blocco note e a fare poi copia e incolla, ma poi mi dice "SyntaxError: multiple statements found while compiling a single statement", perché alcuni elementi hanno bisogno di una riga tutta per loro (insomma, che inizi con >>>), ma se io inserisco manualmente i simboli >>> prima di ciascuna riga dal Blocco note e poi faccio copia e incolla mi dice che  i simboli non sono validi.
Ho provato a cercare su internet ma non ho trovato nulla a riguardo, probabilmente perché sto sbagliando qualcosa di veramente scontato ed elementare, ma non so più dove battere la testa.
Spero di aver spiegato bene quale sia il problema
Grazie in anticipo!

Offline PyPeppe

  • python unicellularis
  • *
  • Post: 31
  • Punti reputazione: 0
    • Mostra profilo
Re:Andare a capo
« Risposta #1 il: Aprile 28, 2020, 12:30 »
mmmh secondo me sei partito proprio maluccio.
Innanzi tutto che IDE usi per scrivere il codice?
Puoi usare anche la IDE nativa di Python, quella che ti ritrovi quando installati Python stesso.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.062
  • Punti reputazione: 9
    • Mostra profilo
Re:Andare a capo
« Risposta #2 il: Aprile 28, 2020, 13:02 »
Uhm... abbi pazienza, ma perché non la raccontiamo giusta?

Non stai cercando di imparare a programmare. Nessun corso, nessun libro, nessun video, per quanto assurdo (e credimi, ce ne sono di veramente assurdi) propone a un principiante alle primissime lezioni qualcosa come "import speedtest".

Quindi direi che stai cercando di copiare e incollare una ricettina trovata in giro da qualche parte. Non saprei neanche indovinare che cosa possa essere questo "speedtest", visto che l'unica cosa che ci somiglia mi sembra che sia speedtest-cli, che però appunto è una cli e non si usa (in genere) in questo modo.

Il problema è che stai cercando di fare questa cosa quando non hai ancora appreso la differenza tra la shell interattiva di Python e uno script Python... quello che grosso modo un corso, o un libro, insegna nelle prime dieci pagine, tanto per capire.
Quindi sì, se la ricettina da copiare che trovi in giro ha delle righe che cominciano con ">>>", allora quello è il prompt (prompt? eccheè) della shell interattiva di Python. Significa che quel codice dovrebbe essere eseguito nella shell interattiva. Significa che dovresti copiare e incollare ciascuna riga separatamente nella shell (e no, non devi anche copiare e incollare il ">>>"... solo quello che viene dopo), e poi premere invio dopo ogni riga. La shell interattiva funziona così. E di sicuro se copi e incolli nel Blocco note qualcosa che comincia per ">>>", quello è errore di sintassi, perché in uno script le righe non cominciano certamente con ">>>".

Purtroppo alla radice di tutto c'è il solito, eterno problema: Python è un linguaggio di programmazione estremamente difficile, ed estremamente difficile da imparare. Nonostante tutto quello che puoi aver sentito in giro. https://pythoninwindows.blogspot.com/2020/03/come-imparare-python-senza-studiare.html
Il suggerimento è sempre il solito, eterno suggerimento: se vuoi imparare Python lascia perdere "speedtest" per un annetto buono, comprati un buon libro (il Lutz è sempre il consiglio) e seguilo passo-passo. Vedrai che queste cose sono spiegate.

Offline Vendrick

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Andare a capo
« Risposta #3 il: Aprile 28, 2020, 15:01 »
Allora, chiariamo che sono nell'IDLE di python, quella che si è installata in automatico assieme al software, in quanto i libri suggeriscono di scrivere lì.
Sto imparando progressivamente (file di testo, variabili, if, ecc.) seguendo i libri, ma questi consigliano anche, per allenarsi con la sintassi, di copiare dei codici che si trovano sul web e provare a trascriverli a mano. Dato questo punto, ho visto su una pagina per principianti un codice di poche righe che permetteva di calcolare la velocità di down-upload e ping, così visto che aveva giusto qualche file di testo e qualche if/elif ho pensato di provare a copiarlo (sveglia, non sto provando a "barare" e cercare di imparare facendo copia e incolla di codici, ci arrivo da solo a capire che servono le basi, e se proprio mi dovesse servire uno speedtest non ho di certo bisogno di farlo su py, ma basta utilizzarne uno dei milioni disponibili su internet).
Detto questo, qualunque sia il codice che provo a copiare, anche se sembra molto semplice, non mi fa andare a capo. Riesco, infatti, ad assegnare variabili (es. X = 7) e premendo invio viene accettata e proseguo con il calcolo (es. 9 * X), ma se provo a fare qualcosa di più articolato come inserire anche un file di testo elementare (es. print ("Prova assegnazione variabili")) e clicco invio per proseguire ed inserire le variabili (es. quelle scritte sopra) il codice parte e mi trascrive il file testo virgolettato (quindi semplicemente mi trovo scritto "Prova assegnazione variabili), mentre invece io voglio mettere il file di testo e continuare ad inserire roba nel codice

Offline PyPeppe

  • python unicellularis
  • *
  • Post: 31
  • Punti reputazione: 0
    • Mostra profilo
Re:Andare a capo
« Risposta #4 il: Aprile 28, 2020, 15:15 »
Anche porre domande, quesiti o dubbi, necessita di una certa comprensione del codice stesso!!

Cosa intendi....
"ma se provo a fare qualcosa di più articolato come inserire anche un file di testo elementare (es. print ("Prova assegnazione variabili")) e clicco invio per proseguire ed inserire le variabili (es. quelle scritte sopra) il codice parte e mi trascrive il file testo virgolettato (quindi semplicemente mi trovo scritto "Prova assegnazione variabili), mentre invece io voglio mettere il file di testo e continuare ad inserire roba nel codice"!?

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.062
  • Punti reputazione: 9
    • Mostra profilo
Re:Andare a capo
« Risposta #5 il: Aprile 28, 2020, 19:11 »
Non so proprio che dire... se non riesci ad aprire una shell e scrivere
>>> 2 + 2
4

allora evidentemente non sei ancora pronto a copincollare del codice che trovi in rete. Devi risolvere un problema alla volta.

Ora, non ci dici su quale libro stai studiano ("i libri", dici... boh? addirittura più di uno contemporaneamente?), e non si capisce a che punto sei arrivato ("file di testo, variabili, if"... ma che minestrone sarebbe?)... Però in genere "i libri" spiegano come si usa la shell di python...
Oddio, è anche vero che un libro di solito presuppone un minimo di agilità e capacità di adattamento... non ti può spiegare come fare clic col mouse o cose del genere... quindi è possibile che un libro sia un po' sbrigativo su questi passaggi iniziali... adesso non ho tempo di guardare, ma per esempio se ricordo bene il Lutz dava abbastanza per scontato che uno sa già che cosa è la console del suo sistema operativo... cose del genere... E suppongo che certi libri siano anche più sbrigativi.

Ora, così alla cieca, posso solo suggerirti di non "copiare" proprio niente, ma di riscrivere. Tanto per cominciare, non puoi copiare qualcosa di multi-linea in una shell di qualsiasi genere... l'interprete dei comandi del tuo sistema operativo, la shell di Python o qualsiasi altra REPL. Questi strumenti sono a riga singola ovviamente (Idle cerca di adattarsi e ti permette di incollare almeno uno statement multi-riga di Python, come un blocco "if" o una funzione... ma certo non più di uno statement per volta). Ora, che una shell proceda una riga alla volta, e quindi non sia possibile incollarci dentro qualcosa di multi-riga, è una di quelle cose che un libro tende a dare per scontato... cioè... è proprio la base...
Però non so se è davvero questo, quello che stai cercando di fare. Ti esprimi in modo troppo confuso per capire bene. In ogni caso, il suggerimento è: non farlo, punto e basta. Fai esclusivamente quello che ti suggerisce di fare il tuo libro, passo-passo, non una virgola di più, non una virgola di meno. Quando avrai acquisito maggiore esperienza, potrai permetterti avventure in solitaria.