Topic: Ho appena iniziato Python e avrei una domanda (probabilmente stupida)  (Letto 67 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline maicol1623

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Nella riga:
print(str(33) + ' trentini entrarono a trento')
Se non metto str python non mi scrive la frase unendola al 33, però se metto STR lo fa, la mia domanda è: lo fa perché STR è un comando che fa capire a python che il 33 e la frase devono essere un'unica stringa?
Scusate se è una domanda stupida :)

Offline bebo

  • python erectus
  • ***
  • Post: 231
  • Punti reputazione: 0
    • Mostra profilo
    • bebo_sudo's personal homepage
Ciao Maicol, benvenuto!

L'errore che ti riporta python quando non usi str e' gia' un buon suggerimento:
>>> 33 + ' trentini entrarono a trento'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'


Cioe' significa che non puoi appiccicare insieme un intero e una stringa (anche per evitare "magie" alla javascript, su cui ci sono una qualche tonnellata di meme al giorno).

Quello che fa str() (che e' una classe builtin in python) e' ritornare un oggetto stringa (che in python3 e' "encodato" come utf-8 di default, qui c'e' un bel tutorial che seguo sempre quando devo maneggiare stringhe con caratteri unicode: https://nedbatchelder.com/text/unipain.html ma che magari per ora per te e' troppo avanzato.. tienilo nei segnalibri  ;) ).

A questo punto, una volta che hai convertito l'intero in una stringa, puoi incollarlo insieme alla seconda stringa.
Attenzione che questo comportamento e' scollegato dal print, e l'errore lo avresti uguale anche se salvassi in una variabile a parte l'intero convertito piu' la stringa prima di stamparlo.

Offline maicol1623

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Grazie mille. Sei stato molto esaustivo e chiaro  :ok: