Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Più colonne?

Gabriele97 (2010 points)
12 29 38
in Programmare in Python by (2.0k points)
recategorized by
Salve a tutti;

ho un codice in cui, in due cicli while, compaiono due variabili contatore, lo scopo è quello di creare una tabella moltiplicativa in cui la prima riga contenga la tabellina del uno, la seconda quella del due e così via.

Fin qui tutto regolare, il problema sta che quando lo eseguo, la console mi restituisce il tutto in un unica colonna giustamente, so che con Python3 si è persa la possibilita di stampare in riga come in Python2, ma vorrei ritornare a questa possibilità in modo da creare una tabella ordinata riga per colonne. Potete aiutarmi?

3 Answers

daniele.gargano (1200 points)
3 7 16
by (1.2k points)
Ti consiglio di guardare i parametri della funzione print: nello specifico "sep" si occupa di cambiare ciò che separa i vari argomenti passati alla funzione print e "end" cambia il/i caratteri da stampare a video dopo l'ultimo argomento (potrebbe esserti utile rimpiazzare quest'ultimo con qualcos'altro).

Oppure ti consiglio l'utilizzo di una lista/stringa, trattandola come un buffer da riempire, printare tutto insieme (magari per formare una riga di una tabella), e svuotare solo successivamente.

Buona serata!
Gabriele97 (2010 points)
12 29 38
by (2.0k points)
Ho risolto, credo in un modo più semplice;  per mettere il tutto su di una riga ho utilizzato l' istruzione end="" di print nel secondo ciclo e  un' istruzione di stampa vuota nel primo(con secondo intendo quello più annidato).
Quindi adesso la mia domanda è questa, perché se ho inserito end="", un istruzione come print("") dovrebbe darmi la possibilità di andare a capo?
Chiedo scusa in anticipo se mi sono spiegato male!
daniele.gargano (1200 points)
3 7 16
by (1.2k points)
Perfetto!
Nella prima parte della mia risposta miravo proprio a farti capire che "end" di default vale '\n', e che quindi avresti dovuto semplicemente cambiarlo con una stringa vuota!
Ne abbiamo parlato giusto oggi in aula P1, per questo ho pensato che fossi dell'altro canale e che quindi non avessi visto l'esempio che ha fatto oggi il prof Sterbini; ho ritenuto opportuno che ci arrivassi da solo, senza fornirti la soluzione in maniera "diretta".
Se ho capito bene cosa hai chiesto, la risposta è sì: passare a un determinato "print" un parametro "end" vuoto modificherà solamente quel singolo print, quindi qualsiasi altro print si comporterà normalmente.
BlackStartx (1910 points)
7 16 30
by (1.9k points)

Non sono sicuro di aver capito, la tua lista viene visualizzata come:

  • 1
  • 2
  • ...
  • 10
  • 2
  • 4
  • ...
  • 20

Mentre la visualizzazione che vuoi tu è:

  • 1     2
  • 2     4
  • ...    ...
  • 10   20

È corretto?

Gabriele97 (2010 points)
12 29 38
by (2.0k points)
si esatto!
Ho inserito anche un ulteriore variabile che consente all utente di specificare di quale numero vuole visualizzare la tabella moltiplicativa, ma questo è superfluo per il mio problema!
francesco.dev (33560 points)
22 51 129
by (33.6k points)

Ciao Gabriele97

Per poter risolvere tale problema ti basterà inserire il valore del carattere finale presente nella print. Ovvero ti basterà assegnare un valore al carattere finale "end" che sia diverso da '\n'.
Infine, come risposta al tuo commento, posso consigliarti di usare l'end per ogni print che non deve andare a capo! Perché non basta usarlo una volta affinché tutte le print non vadano a capo!

Spero di aver risolto il tuo problema e di aver capito appieno la domanda!