2014-04-13 20 views
5

Python, sen yapabilirsiniz: Bunun için bir kısaltmadırPython - bölümün kalan süresi var mı?

assert a % b == 0 
c = a // b 

var mı? Diğer bir deyişle, bir kalan varsa bir istisna atar tamsayı bölme yapmak için bir yol?

Bunu sormamın sebebi bu gibi durumlarda uygun olacağını geçerli:

count = len(self.rawr.foo)/self.this.is.a.long.variable 

Şu anda geçici değişkenleri yapmak zorunda:

a = len(self.rawr.foo) 
b = self.this.is.a.long.variable 
assert a % b == 0 
count = a // b 

çok pythonic görünmüyor.

C# gibi bazı dillerin güvenli bölümleme yapma yollarının olduğunu biliyorum; Python'un yapmadığı garip. Sen yapabilirdi

+2

Açıkça durum istisna olarak daha assert' 'konusunda açık böyle olmasını isteyebilirsiniz. En azından, python -O'nun “assert” ifadelerinin yok sayılmasına neden olduğunu unutmayın (diğer şeylerin yanı sıra). – kojiro

cevap

6

:

count, rem = divmod(len(self.rawr.foo), self.this.is.a.long.variable) 
assert not rem # or `assert rem == 0` 
+2

Parlak! Yerleşik olmasına rağmen, divmod'u hiç bilmiyordum. Teşekkürler. – Billy