De ce input întoarce text, chiar dacă scrii un număr
De ce input întoarce text, chiar dacă scrii un număr. Exemple explicate, cazuri-limită și întrebări frecvente pentru a înțelege și verifica rezultatul.
În acest material
Faptul că utilizatorul tastează cifre nu schimbă tipul întors de input. Funcția citește o linie și o oferă programului ca text. Interpretarea acelui text ca întreg, număr real sau alt tip este o operație ulterioară, aleasă de program. Multe rezultate surprinzătoare provin din omiterea acestei separări.
Exemplul care separă comportamentele
Dacă două apeluri input citesc 2 și 3, variabilele păstrează textele "2" și "3". Expresia a+b produce "23", nu 5. După conversiile int(a) și int(b), adunarea produce 5. Ambele operații sunt valide, dar rezolvă cerințe diferite. Python nu ghicește că un text format din cifre trebuie folosit ca număr.
Textele 2 și 3 se concatenează în 23; după int, aceleași intrări se adună la cinci.Mărește schema ↗
De unde apare greșeala
Operatorul plus are comportamente definite pentru tipurile operanzilor: adună numere sau concatenează texte. Eroarea nu este în print și nici în citirea cifrelor, ci în modelul datelor păstrate. Afișarea simplă poate ascunde diferența, deoarece print("2") și print(2) arată la fel. Tipul sau operația următoare scoate însă diferența la iveală.
Corectarea și verificarea
Stabilește tipul cerut de problemă înainte de calcul. Pentru întregi, convertește cu int și tratează ValueError dacă intrarea nu este garantat validă. Pentru coduri poștale sau identificatori, păstrează textul: zerourile inițiale pot fi importante. Nu folosi eval ca să transformi intrarea numerică; ai permite interpretarea unor expresii pe care cerința nu le solicită.
Limite și cazuri importante
Input citește o singură linie și elimină terminatorul ei, fără să împartă automat cuvintele. Linia "2 3" nu poate fi convertită direct cu int ca un singur întreg; trebuie separată în două fragmente dacă acesta este formatul. Un mesaj transmis ca argument lui input este afișat înaintea citirii și poate strica ieșirea exactă a unei probleme evaluate automat.
Verifică singur
Compară trei intrări: "007", "7" și "7.0". Primele două se convertesc prin int la aceeași valoare 7, pierzând diferența de reprezentare. A treia produce ValueError la conversia directă în întreg. Decide dacă vrei să păstrezi reprezentarea sau valoarea matematică înainte de a alege conversia.
Continuă studiul
Pentru a urmări codul fără pași neexplicați, revino la afișarea cu print, tipurile numerice și conversiile, citirea și validarea intrării. Aceste lecții separă citirea, prelucrarea și afișarea, aceeași împărțire folosită în exemplul de aici.
Pentru contractul exact al operației, consultă documentația oficială Python. Exemplele nu presupun biblioteci externe sau particularități ale unei platforme.
Întrebări frecvente
De ce două intrări numerice se lipesc la adunare?
Pentru că sunt încă texte. Operatorul plus concatenează două valori str, iar conversia la int trebuie făcută explicit înaintea adunării.
Print poate transforma automat operația în adunare numerică?
Nu. Expresia este evaluată înainte de afișare, conform tipurilor valorilor pe care le conține.
Este corect să convertesc orice text cu cifre în int?
Numai dacă semnificația datelor este numerică. Identificatorii cu zerouri inițiale pot necesita păstrarea textului original.