Herkese iyi günler python öğrenmeye yeni başladım o yüzden benim bir sorum olacak pow () fonksiyonu içindeki ifadenin sonucunun kaç basamaklı olduğunu öğrenmek için prin(len(pow(x,y))) yapınca çıktı almamız gerekmiyor mu? şimdiden teşekkürler
Merhaba.
Sayıları len
fonksiyonu ile kullanamayız, sayıların uzunluğu yoktur. Önce str
'ye çevirmeniz lazım:
print(len(str(x**y)))
len() fonksiyonu bize karaker bazında uzunluk vermiyor mu ben mi yanlış öğrendim eğer benim öğrendiğim doğruysa olması lazım program yazdığım kodu bu şekilde okumayacak mı
yazdır neyi karakter uzunluğunu o nerede pow kısmında pow ne diyor x^y sonucunu tarzında bize bir çıktı vermesi gerekmıyor mu?
6.28
sayisi kac basamaklidir?
Ya pow(3, -1)
?
Normalde cevaplayamadım
Kendine verilen argüman neyse onun -varsa- uzunluğunu veriyor, karakter bazında olacak diye bir şey yok.
Sayıları (int
) karakter dizileri (str
) ile karıştırıyorsunuz, benim verdiğim kod tam olarak bu dediğinizi yapıyor. Sayıların uzunluğu veya karakteri olmaz, karakteri olmayan sayıların karakter uzunluğu da olmaz.
Sorunun cevabını bilmemekle birlikte, biraz akıl yürütmek istiyorum. Belki yanlış düşüncelere sapacağım ama, sonuçta yeni bir şey öğreneceğiz gibi hissediyorum.
Şimdi hocam, bahsettiğiniz sayıyı ele alalım:
Python bize diyor ki:
6.28 == 6.2799999999999999
Yukarıdaki ifade True
değerini veriyorsa, biz bu 6.28
sayısının yuvarlanmış bir sayı olabileceğini söyleyemez miyiz?
Üstelik bir çok farklı basamaktaki sayı python tarafından 6.28
’e eşit olarak kabul edilemez mi?
Dolayısıyla benim tahminim şu yönde, float
cinsinden sayıların tam anlamıyla kaç basamaklı olduklarını bilemeyiz.
Ama illa ki basamağı olup olmadığını söylemek gerekirse, 6.28
sayısının ondalık kısmı 2 basamaklı gibi görünüyor diyerek muğlak bir söz söyleyebilirim. Ama yanılıyor da olabilirim.
Siz ne dersiniz hocam?
float
’lar hafızada sınırlı ve sabit bir alan kapsıyor, sınırlı bir hafızayla sonsuz elemana sahip rasyonel sayılar kümesindeki her değeri ifade edemeyiz. Belli aralıklardaki değerlere sadece bir float
karşılık geliyor. Bu durum bundan kaynaklı. Zaten daha önce konuşmuştuk.
Bu daha çok basamağın tanımı ile alakalı. Hiçbir tam sayının kaç basamaklı olduğunu bilemeyiz mesela; çünkü basamak sayının kendisine ait bir özellik değil, yazılışına ait bir özellik. Onluk tabanda yazıldığında 1 basamaklı olan bir tam sayı ikilik tabanda yazıldığında 3 basamaklı olabilir.
float
’ların da herhangi bir özelliğine “basamak” adı koyabiliriz, veya “float
’ların basamağı olmaz” da diyebiliriz. Basamak her nesnenin veya sayının sahip olması gereken çok önemli bir özellik değil. Ayrıca ortada doğruluğu kanıtlanacak bir şey yok, sadece belli durumları anlatmamızı sağlayan bir kavram var.
@EkremDincel’in soylemek isteyecegim her seyi yazmis, ekleyecek bir seyim bile yok
Zaten "basamak sayisi"nin kotu tanimli olduguna dikkat cekmek icin sordum bu sorulari. Cevaplari oldugunu dusunmuyorum.
İkinize de teşekkür ediyorum.
İlgilenen herkese teşekkür ederim
Bir şey daha sorabilir miyim? Kendi kendime öğrenme adına pratik yaparken bir şeyi daha anlamadım resimde görüldüğü gibi 10^4 ifadesini 4 kökünü alırsak 10 kalıp bize 2 çıktısını vermesi yerine neden 4 çıktısını veriyor? Şimdiden teşekkür ederim
Şunu bi’ print eder misiniz:
pow(10_000, 1/4)
Sadece pow() fonksiyonu kullanırsam 10 şeklinde doğru sonuç veriyor ama şekildeki gibi kullanırsam string argümanın içindeki sayı 2 karakter dizisinden oluştuğu için 2 çıktısını almam gerektiğini düşünüyorum. Program nedense 4 çıktısını veriyor.
10
mu yoksa 10.0
mı?
Tamam sorunu çözdüm program bize ondalıklı olarak çıktı veriyormuştu strink argümanından sonra integer argümanı girip sonra pow dersek tam sayı kısmı olan 10 sayısının karakter uzunluğunu veriyor ilginiz için teşekkür ederim
program 10.0 veriyor.