Hejmara rêzika str biguherîne hejmara int, di Python de biherike

Dikan

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()
  • 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.

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()

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
Copied title and URL