Kezdőoldal » Számítástechnika » Programozás » Ez az egyszerű parancs miért...

Ez az egyszerű parancs miért nem működik?

Figyelt kérdés

Python 3.7.2 win7 idle


int(print('2'))


output:

2

Traceback (most recent call last):

File "C:\Users\xx\Desktop\Gyakorlás.py", line 1, in <module>

int(print('2'))

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'


A print('2') outputja 2, tehát olyan, mintha int(2)-t írtam volna a fő parancsba. Annak meg 2 az értéke. A program mégis hibaüzit küld. Miért nem lehet int parancsban print parancs? De print parancsban már lehet int parancs.


2019. ápr. 1. 18:02
 1/9 anonim ***** válasza:

Hűűű. Nálad gondok vannak a kiírás/érték visszaadás közti különbséggel. Ajánlom, hogy innen tanuld az alapokat: [link] [link]


A print kiír a képernyőre és visszaad egy int-et. Az int függvény pedig egy stringre vár.

2019. ápr. 1. 18:11
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Világosan elpofázza neked a hibaüzenet, hogy a print funkció visszatérési értéke NoneType. Az int meg csak a felsorolt argumentumokat képes kezelni.
2019. ápr. 1. 18:17
Hasznos számodra ez a válasz?
 3/9 tabaki ***** válasza:
Ugye, magad sem gondolod komolyan, hogy a „nyomtasd ki ezt meg ezt a szöveget” utasítás egy egész számmá alakítható?
2019. ápr. 1. 19:58
Hasznos számodra ez a válasz?
 4/9 Ozmium42 ***** válasza:

A print egy függvény, ami két dolgot csinál, és fontos világosan látni a különbséget.


1. Kiír valamit a konzolra. Ez nem visszatérési érték.

2. Visszatér None értékkel. Ez visszatérési érték.


A példád összekeveri a kettőt, a None-t próbálod integerré alakítani.

2019. ápr. 1. 21:08
Hasznos számodra ez a válasz?
 5/9 tabaki ***** válasza:

„Miért nem lehet int parancsban print parancs? De print parancsban már lehet int parancs.”


Nem ártana, ha ezeknek a „parancsoknak” az értelmével is foglalkoznál, ezek ugyanis jelentéssel bíró nyelvi elemek, és az, hogy egy nem egészen korrektül használt általános gumifogalommal lefeded őket, semmit nem változtat a szerepükön, vagyis nem jogosít fel arra, hogy tetszés szerinti sorrendben és összefüggésben hányd őket kazalba.

A kolléga szavait alátámasztandó, írd be a következőt:

>>> a = print(print('2'))

Az eredmény:

2

None

A kettes számjegy tiszta sor, azt a belső print írta ki. Az érdekesség a None, amelyet a külső print szolgáltat, amikor azt kéred tőle, hogy az iménti tevékenység értékét írja ki -- tehát, amit a másik print végrehajtása után kap. Ez pedig: Semmi.

Nem ismerem a Python-interpretert, ezért nem tudom, hogy ez tényleg pusztán annyit jelent, hogy egyáltalán nem kap vissza értéket, vagy azt, hogy van ilyen, de csak az értelmező számára fenntartott, speciális kód formájában, azonban mindegy is; A program szempontjából nincs -- csak mellékesen jegyzem meg, hogy ez nem azonos például a nullával, ami tárolható, felhasználható, vagyis a program szempontjából nagyon is létező számérték volna. Az int(print('2')) paranccsal tehát arra utasítod a Pythont, hogy a nagy semmit alakítsa egésszé. Hát, aranyszívem van, de egy ilyen felkérés ellen én is berzenkednék...

2019. ápr. 1. 23:55
Hasznos számodra ez a válasz?
 6/9 tabaki ***** válasza:

+ A fenébe, félálomban nem néztem meg, mit másolok ki. Fölösleges az „a =” értékadás, elég ennyi:

>>> print(print('2'))

2019. ápr. 2. 00:54
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

Mert semmi értelme.

+1: ezek függvények, nem parancsok.

2019. ápr. 2. 01:15
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

A print azért van, hogy a konzolba kiírja, ami a zárójelen belül van. Minek alakítanád át mégis intté?

Szerintem ne erőltesd. Vagy keress valami értelmes forrást a tanuláshoz, mert ha minden ennyire alap dolognál így leakadsz, az nem sok jót jelent.

2019. ápr. 2. 07:59
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszönöm a válaszokat. Most már sokkal jobban értem.
2019. ápr. 2. 19:14

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!