Ha Pythonban egy számsorozatot számértékekké akarsz konvertálni, használd az int() funkciót az egész számokká, a float() funkciót pedig a lebegőpontos számokká való konvertáláshoz.
A következőket itt magyarázzuk el, mintakóddal együtt.
- Alapvető használat
- Numerikus karakterláncok egész számokká alakítása:
int()
- Egy számsorozat átalakítása lebegőpontos számokká:
float()
- Numerikus karakterláncok egész számokká alakítása:
- Különleges használat
- A bináris, oktális és hexadecimális jelölésű karakterláncokat számokká konvertálja.
- Az exponenciális jelölésű karakterláncokat numerikus értékekké konvertálja.
- Teljes szélességű arab számsorok számokká alakítása
- Kínai karakterlánc számokká alakítása
A numerikus értékek karakterlánccá alakításához használja a str() függvényt.
Ha számokat vagy karakterláncokat szeretne különböző formátumokba konvertálni, használja a format() függvényt vagy az str.format() karakterlánc-módszert. Ezután átkonvertálhatod 0-töltéses, bináris, oktális, hexadecimális, exponenciális jelölésbe stb. A részleteket lásd a következő cikkben.
- KAPCSOLÓDÓ:Formátumkonverzió Pythonban, formátum (0 kitöltés, exponenciális jelölés, hexadecimális, stb.)
A program képes a karakterláncok listáját számok listájává alakítani. A részleteket lásd a következő cikkben.
- Numerikus karakterláncok egész számokká alakítása: int()
- Egy számsorozat átalakítása lebegőpontos számokká: float()
- A bináris, oktális és hexadecimális jelölésű karakterláncokat számokká konvertálja.
- Az exponenciális jelölésű karakterláncokat numerikus értékekké konvertálja.
- Teljes szélességű arab számsorok számokká alakítása
- Kínai karakterlánc számokká alakítása
Numerikus karakterláncok egész számokká alakítása: int()
Az int() segítségével egy számsorozatot egész típusú számokká konvertálhat.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
A tizedesjegyek, beleértve a tizedesvesszőket is, és a vesszővel elválasztott karakterláncok ValueError-t eredményeznek.
# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'
# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'
A vesszővel elválasztott karakterláncok a replace() metódus segítségével a vessző eltávolításával (üres karakterlánccal való helyettesítésével) konvertálhatók.
print(int('10,000'.replace(',', '')))
# 10000
Egy számsorozat átalakítása lebegőpontos számokká: float()
A float() segítségével egy számsorozatot lebegőpontos számtípussá konvertálhatunk.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Az olyan karakterláncokat, amelyeknél az egész szám rész kimaradt, úgy kell átalakítani, hogy az egész szám részt kiegészítjük 0-val.
print(float('.23'))
# 0.23
Az egészértékű karakterláncok szintén lebegőpontos számokká konvertálódnak.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
A bináris, oktális és hexadecimális jelölésű karakterláncokat számokká konvertálja.
Ha az int() második argumentumaként radixot adunk meg, akkor a karakterláncot bináris, oktális, hexadecimális, stb. számként tekintve egész számú int-té alakíthatjuk át.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Az előző példákhoz hasonlóan, ha kihagyjuk, a számot tizedes számnak tekintjük.
print(int('100', 10))
print(int('100'))
# 100
# 100
Ha a radix 0-ra van állítva, a konverzió a karakterlánc előtagja alapján történik. A karakterlánc-előtagokat lásd alább.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Az előtagok és a hexa betűjelek lehetnek kis- vagy nagybetűsek.
print(int('FF', 16))
print(int('ff', 16))
# 255
# 255
print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255
A bináris, oktális és hexadecimális számok és karakterláncok átváltásáról a következő cikkben olvashat.
- KAPCSOLÓDÓ:Bináris, oktális és hexadecimális számok és karakterláncok egymáshoz való átalakítása Pythonban
Az exponenciális jelölésű karakterláncokat numerikus értékekké konvertálja.
Az exponenciális jelölésű karakterláncok közvetlenül float típusba konvertálhatók a float() segítségével.
print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>
print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>
A kisbetűs e nagybetűs E is lehet.
print(float('1.23E-4'))
# 0.000123
Teljes szélességű arab számsorok számokká alakítása
A teljes szélességű arab számok közvetlenül számokká alakíthatók az int() vagy a float() segítségével.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Ha azonban az olyan szimbólumok, mint a mínusz és a tizedesvessző teljes szélességű karakterek, ValueError keletkezik.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
A számok problémamentesen konvertálhatók, ha teljes szélességű karakterek, de a mínuszok és a tizedesjegyek félszélességű karakterek. a konverzió úgy lehetséges, hogy a replace() metódus segítségével a teljes szélességű szimbólumokat félszélességű szimbólumokkal helyettesítjük.
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Kínai karakterlánc számokká alakítása
Az unicodedata.numeric() függvény az unicodedata modulban használható egyetlen Unicode kínai karakter lebegőpontos szám típusú számmá alakítására.
Ha nem egyetlen betű, hiba lép fel. A nem numerikus karakterek is hibát okoznak.
import unicodedata
print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>
print(unicodedata.numeric('十'))
# 10.0
print(unicodedata.numeric('参'))
# 3.0
print(unicodedata.numeric('億'))
# 100000000.0
# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str
# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character