Pythonda mesela bir a değişkeni tanımladık birde b
a / b nin cevabı tam sayıysa şu uyarıyı ver nasıl diyebilirim ?
Merhaba, aşağıdaki kodları bir inceleyin isterseniz:
def f(x, y):
if float(x / y) == int(x / y):
print("tamsayı")
elif float(x / y) != int(x / y):
print("ondalıklı sayı")
f(2, 1)
# tamsayı
f(10, 5)
# tamsayı
f(5, 2)
# ondalıklı sayı
veya:
def g(x, y):
if x / y == x // y:
print("tamsayı")
elif x / y != x // y:
print("ondalıklı sayı")
g(4, 2)
# tamsayı
f(12, 6)
# tamsayı
f(15, 2)
# ondalıklı sayı
python çok demokratik çareler tükenmiyor pek çok yöntem var, ek olarak kalan sıfırsa kontrolünden de gidilebilir(tam bölünüyorsa);
def ek(x, y):
if x % y == 0:
print('tamsayı')
else:
print('ondalıklı sayı')
ek(6, 6)
# tamsayı
ek(15, 2)
# ondalıklı sayı
def if ve else den sonra 4’er boşluk var ama bu editorde bir türlü kod yazamadım, bir püf noktası var ama??, dilde_olupbiten ne güzel yazmış, işte bilmek başka şey.
Kodlardan önce bir satır boşluk bırakmayı deneyin.
[code]
# Kodları bu aralığa yazarsanız, kodlar renklenir.
[/code]
evet % kodu mantıklı x % y zaten 0 ise tam sayı olmuş oluyor sağ olasın
Python’da bulunan isinstance
fonksiyonunu bu tür işler için kullanırız.
>>> x = 3
>>> y = 3.5
>>>
>>> isinstance(x, int)
True
>>> isinstance(y, int)
False
>>>
Ama bölme işleminde bu fonksiyonu kullanmak istenilen sonucu vermiyor. Biliyorsunuz, bölme işleminin sonucu hep float cinsinden üretiliyor.
Örnek:
>>> x = 9 / 3
>>> isinstance(x, int)
False
>>>
Python 2’de Python 3’ten farklı olarak bölme işlemi her zaman float türünde döndürülmüyor. Eklemeyi unutmuşum, teşekkür ederim
>>> isinstance(9 / 3, int)
True
>>> isinstance(9 / 3.0, int)
False
>>>
Hımm, Python2 için geçerli olan bu durumu bilmiyordum, teşekkür ederim.
Biraz zorlamak gerekirse :
def tamsayi(x,y):
if(str(x/y).endswith(".0")):
return True
else:
return False
Şu satırda sonunun 0
olacağını nereden biliyorsunuz ki:
if(str(x/y).endswith(".0")
@hasser’in paylaştığı kodlar, yalnızca Python3 için geçerlidir. Python3’de bir tamsayı başka bir tamsayıya bölündüğünde kalan 0 olsa dahi bölüm float tipinde bir veridir.
>>> 9 / 3
3.0
>>> 9 / 4
2.25
>>>
Mesela benim paylaştığım kodlar da sadece Python3’de istenen sonucu verir. Bu başlıktaki cevaplardan sadece @trdjango’nun paylaştığı kodlar hem Python2’de hem de Python3’te istenen sonucu verir.
@hasser, @dildeolupbiten, yanlış anlamışım kodu, şimdi anladım.