2014-04-13 13 views
5

W Pythonie można zrobić:Python - wyjątek throw, jeśli podział pozostał?

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

Czy jest skrótem dla tego? Innymi słowy, sposób na podział całkowity, który rzuca wyjątek, jeśli jest reszta?

Pytam się, że byłoby to wygodne w sytuacjach takich jak ta:

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

Teraz muszę zrobić zmienne tymczasowe:

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

które nie wydają się bardzo pythonic.

Wiem, że niektóre języki, takie jak C#, mają sposoby na bezpieczny podział; dziwne, że Python tego nie robi.

+2

Możesz być bardziej wyraźne o 'assert', takich jak podnoszenie wyjątek wyraźnie. Przynajmniej należy pamiętać, że 'python -O' powoduje, że instrukcje 'assert' są ignorowane (między innymi). – kojiro

Odpowiedz

6

Można zrobić:

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

Genialny! Pomimo tego, że był wbudowany, nigdy nie wiedziałem o divmod. Dzięki. – Billy

Powiązane problemy