Python'da % ifadesinin sonucu nedir?
Bir hesaplamadaki %
ne işe yarar? Ne işe yaradığını anlayamıyorum.
Hesaplamanın bir yüzdesini hesaplıyor mu, örneğin: 4 % 2
görünüşe göre 0'a eşittir. Nasıl?
229
3
gt;% (modulo) işleci, ilk bağımsız değişkenin ikinciye bölümünden kalanı verir. Sayısal bağımsız değişkenler önce ortak bir türe dönüştürülür. Sıfır sağ bağımsız değişken ZeroDivisionError istisnasını yükseltir. Bağımsız değişkenler kayan noktalı sayılar olabilir, örneğin, 3,14%0,7 eşittir 0,34 (3,14 eşittir 4*0,7 + 0,34.) Modulo işleci her zaman ikinci işleneniyle aynı işarete sahip (veya sıfır) bir sonuç verir; sonucun mutlak değeri, ikinci işlenenin mutlak değerinden kesinlikle daha küçüktür [2].
http://docs.python.org/reference/expressions.html adresinden alınmıştır.
Örnek 1: 6%2
`0
olarak değerlendirilir çünkü 6 2`ye bölünürse (3 kez) kalan olmaz.Örnek 2: 7, 2
ye bölündüğünde (3 kez)
1kalan olduğu için
7%2`1
olarak değerlendirilir.Özetlemek gerekirse, bir bölme işleminin kalanını veya kalan yoksa
0
değerini döndürür. Yani6%2
, 6'nın 2'ye bölümünden kalanı bulmak anlamına gelir.x % y
gibi bir ifade
x ÷ ynin kalanı olarak değerlendirilir - teknik olarak "hatırlatıcı" yerine "modül" olduğundan,
%nin kalan operatörü olduğu diğer dillerle karşılaştırıyorsanız sonuçlar farklı olabilir. [Bazı ince farklılıklar vardır](https://rob.conery.io/2018/08/21/mod-and-remainder-are-not-the-same/) (pratik sonuçlarla ilgileniyorsanız ayrıca "Neden Python'ın Tamsayı Bölme Katları" bölümüne bakınız). Öncelik
/(bölme) ve
*` (çarpma) operatörleri ile aynıdır.%
aynı zamanda (kullanımdan kaldırılmış) string interpolasyon operatörüdür, bu nedenle'12' % 2 + 3
gibi bir ifadenin yasal olduğu otomatik tip dökümüne sahip bir dilden (PHP veya JS gibi) geliyorsanız dikkat edin: Python'daTypeError: not all arguments converted during string formatting
ile sonuçlanacaktır ve bu muhtemelen sizin için oldukça kafa karıştırıcı olacaktır. [Python 3 için güncelleme] Kullanıcı n00p yorumları:Modern Python
da
9/2gerçekten de
4,5` sonucunu verir:[güncelleme] Kullanıcı dahiya_boy yorum oturumunda sordu:
Bunun nedeni JavaScript'te `%' "remainder" operatörü iken Python'da "modulus" (saat matematiği) operatörüdür.
Açıklamayı doğrudan GvR'den](http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html) edinebilirsiniz:
0 >= r > b.
Modül operatörü, tipik olarak tamsayılarda kalan bölme işlemi için kullanılır, ancak Python'da kayan noktalı sayılar için de kullanılabilir.
http://docs.python.org/reference/expressions.html