Heke hûn dixwazin rêzek hejmaran di Python de veguherînin nirxên hejmarî, ji bo veguheztina jimareyan int() bikar bînin û ji bo veguheztina hejmarên xala herikandinê float() bikar bînin.
Ya jêrîn li vir, digel koda nimûneyê, tê rave kirin.
- Bikaranîna bingehîn
- Rêzikên hejmarî veguherînin jimaran:
int()
- Rêzikek ji hejmaran veguherînin jimareyên xala herikîn:
float()
- Rêzikên hejmarî veguherînin jimaran:
- Bikaranîna Taybet
- Rêzên binî, oktal û hexadecimal vediguherîne jimareyan
- Rêzên di nîşeya nîşankirî de vediguherîne nirxên hejmarî
- Têlên jimareyên erebî yên tev-fireh veguherînin jimareyan
- Rêzikek tîpên Çînî veguherînin hejmaran
Ji bo veguheztina nirxek hejmarî bo rêzek, str() bikar bînin.
Heke hûn dixwazin hejmaran an rêzikan veguherînin formên cihêreng, fonksiyona format() an jî rêbaza rêzikê str.format() bikar bînin. Dûv re hûn dikarin biguhezînin 0-dagirtin, binary, oktal, hexadecimal, nîşeya berbiçav, hwd. Ji bo hûrgulî li gotara jêrîn binêre.
- TÊKIRIN:Veguheztina formatê di Python de, format (0-dagirtin, nîşankirina berbiçav, hexadecimal, hwd.)
Di heman demê de ew dikare navnîşek rêzan veguherîne navnîşek hejmaran. Ji bo hûragahiyan li gotara jêrîn binêre.
- Rêzikên hejmarî veguherînin jimaran:int()
- Rêzikek ji hejmaran veguherînin jimareyên xala herikîn:float()
- Rêzên binî, oktal û hexadecimal vediguherîne jimareyan
- Rêzên di nîşeya nîşankirî de vediguherîne nirxên hejmarî
- Têlên jimareyên erebî yên tev-fireh veguherînin jimareyan
- Rêzikek tîpên Çînî veguherînin hejmaran
Rêzikên hejmarî veguherînin jimaran:int()
Hûn dikarin int()-ê bikar bînin da ku rêzek hejmaran veguherînin jimareyên tîpa yekjimar.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Dehanî, di nav de xalên dehiyê, û rêzikên ku bi kommasê veqetandî ne, dê bibe sedema ValueError.
# 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'
Rêzên ku bi komma veqetandî têne veguheztin bi karanîna rêbazaplace()-ê bi rakirina koma (li şûna wê bi rêzek vala) ve têne veguheztin.
print(int('10,000'.replace(',', '')))
# 10000
Rêzikek ji hejmaran veguherînin jimareyên xala herikîn:float()
A float() dikare were bikar anîn da ku rêzek hejmaran biguhezîne celebek hejmar-xala hêlînê.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Rêzên ku beşa jimare jê dernakeve bi temamkirina beşa jimare bi 0-yê ve têne guhertin.
print(float('.23'))
# 0.23
Rêzên yekjimar jî vediguherin jimareyên xala hêlînê.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Rêzên binî, oktal û hexadecimal vediguherîne jimareyan
Ger radîksek wekî argumana duyemîn ji bo int(-ê) were destnîşan kirin, string dikare bi jimareyek yekjimar were veguheztin ku wê wekî binar, octal, hexadecimal, hwd.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Weke di mînakên berê de, heke jê were derxistin, hejmar wekî jimareyek dehiyek tê hesibandin.
print(int('100', 10))
print(int('100'))
# 100
# 100
Ger radîx li 0 were danîn, veguheztin li ser bingeha pêşgira rêzikê ye. Ji bo pêşgirên rêzikan li jêr binêre.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Pêşgir û alfabeyên heksê dibe ku mezin an piçûk bin.
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
Ji bo agahdariya li ser veguheztina hejmar û rêzikên binar, oktal, û hexadecimal li gotara jêrîn binêre.
Rêzên di nîşeya nîşankirî de vediguherîne nirxên hejmarî
Rêzên di nîşesaziya berbiçav de rasterast dikarin bi float(-ê) veguhezînin celebê float.
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'>
Her weha e-ya piçûk dibe ku bibe E-ya mezin.
print(float('1.23E-4'))
# 0.000123
Têlên jimareyên erebî yên tev-fireh veguherînin jimareyan
Jimarên erebî yên tev-fireh dikarin rasterast bi int() an float() veguhezînin jimareyan.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Lêbelê, heke sembolên wekî minus û demên dehiyê tîpên tev-fireh bin, dê ValueError çêbibe.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Hejmar dikarin bê pirsgirêk bêne guheztin ger ew tîpên tam fireh bin, lê xalên kêm û deh tîpên nîv-firayî ne. veguhertin bi guheztina sembolên tev-fireh bi sembolên nîv-fireh ve bi karanîna rêbaza şûna() mimkun e.
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Rêzikek tîpên Çînî veguherînin hejmaran
Fonksiyona unicodedata.numeric() ya di modula unicodedata de dikare were bikar anîn da ku yek tîpek çînî ya Unicode veguherîne jimareyek celeb-hejmarek xalîçeyê.
Ger ne yek tîp be dê xeletiyek çêbibe. Her weha, tîpên ne-hejmar dê bibe sedema xeletiyek.
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