Python’da bir sayı dizisini sayısal değerlere dönüştürmek istiyorsanız, tam sayılara dönüştürmek için int() ve kayan nokta sayılarına dönüştürmek için float() kullanın.
Aşağıda örnek kodla birlikte burada açıklanmıştır.
- Temel kullanım
- Sayısal dizeleri tam sayılara dönüştürün:
int()
- Bir sayı dizisini kayan nokta sayılarına dönüştürün:
float()
- Sayısal dizeleri tam sayılara dönüştürün:
- Özel Kullanım
- İkili, sekizli ve onaltılı gösterimdeki dizeleri sayılara dönüştürür
- Üstel gösterimdeki dizeleri sayısal değerlere dönüştürür
- Tam genişlikte Arap rakam dizilerini sayılara dönüştürün
- Çince karakter dizisini sayılara dönüştürün
Sayısal bir değeri bir dizgeye dönüştürmek için str() kullanın.
Sayıları veya dizeleri çeşitli biçimlere dönüştürmek istiyorsanız, format() işlevini veya str.format() dize yöntemini kullanın. Ardından 0-doldurma, ikili, sekizli, onaltılı, üstel gösterim vb.’ye dönüştürebilirsiniz. Ayrıntılar için aşağıdaki makaleye bakın.
Ayrıca bir dizi listesini bir sayı listesine dönüştürebilir. Ayrıntılar için aşağıdaki makaleye bakın.
- Sayısal dizeleri tam sayılara dönüştürün:int()
- Bir sayı dizisini kayan nokta sayılarına dönüştürün:float()
- İkili, sekizli ve onaltılı gösterimdeki dizeleri sayılara dönüştürür
- Üstel gösterimdeki dizeleri sayısal değerlere dönüştürür
- Tam genişlikte Arap rakam dizilerini sayılara dönüştürün
- Çince karakter dizisini sayılara dönüştürün
Sayısal dizeleri tam sayılara dönüştürün:int()
Bir sayı dizisini tamsayı türü sayılara dönüştürmek için int() kullanabilirsiniz.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Ondalık sayılar da dahil olmak üzere ondalık sayılar ve virgülle ayrılmış dizeler ValueError ile sonuçlanır.
# 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'
Virgülle ayrılmış dizeler, replace() yöntemi kullanılarak virgül kaldırılarak (boş bir dizeyle değiştirilerek) dönüştürülebilir.
print(int('10,000'.replace(',', '')))
# 10000
Bir sayı dizisini kayan nokta sayılarına dönüştürün:float()
Bir sayı dizisini kayan noktalı sayı türüne dönüştürmek için bir float() kullanılabilir.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
Tamsayı kısmı atlanmış olan dizeler, tamsayı kısmı 0 ile tamamlanarak dönüştürülür.
print(float('.23'))
# 0.23
Tamsayı dizeleri ayrıca kayan noktalı sayılara dönüştürülür.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
İkili, sekizli ve onaltılı gösterimdeki dizeleri sayılara dönüştürür
int() işlevinin ikinci argümanı olarak bir sayı tabanı belirtilirse, dize ikili, sekizli, onaltılı vb. olarak değerlendirilerek bir tamsayı int’ye dönüştürülebilir.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Önceki örneklerde olduğu gibi, atlanırsa, sayı ondalık sayı olarak kabul edilir.
print(int('100', 10))
print(int('100'))
# 100
# 100
Taban 0’a ayarlanırsa, dönüştürme dize önekine dayalıdır. Dize önekleri için aşağıya bakın.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Ön ekler ve onaltılı harfler büyük veya küçük harf olabilir.
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
İkili, sekizli ve onaltılı sayıların ve dizelerin birbirine dönüştürülmesi hakkında bilgi için aşağıdaki makaleye bakın.
Üstel gösterimdeki dizeleri sayısal değerlere dönüştürür
Üstel gösterimdeki dizeler, float() ile doğrudan kayan tipe dönüştürülebilir.
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'>
Küçük harf e de büyük harfle E yazılabilir.
print(float('1.23E-4'))
# 0.000123
Tam genişlikte Arap rakam dizilerini sayılara dönüştürün
Tam genişlikteki Arap rakamları, int() veya float() ile doğrudan sayılara dönüştürülebilir.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Ancak, eksi ve ondalık nokta gibi simgeler tam genişlikte karakterlerse, bir ValueError oluşturulur.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Rakamlar tam genişlikte karakterlerse sorunsuz bir şekilde dönüştürülebilir, ancak eksi ve ondalık noktalar yarım genişlikte karakterlerdir. replace() yöntemini kullanarak tam genişlikli sembolleri yarım genişlikli sembollerle değiştirerek dönüştürme mümkündür.
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Çince karakter dizisini sayılara dönüştürün
unicodingata modülündeki unicodedata.numeric() işlevi, tek bir Unicode Çince karakterini kayan noktalı sayı türü numarasına dönüştürmek için kullanılabilir.
Tek bir harf değilse, bir hata oluşacaktır. Ayrıca sayısal olmayan karakterler de hataya neden olacaktır.
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