2014-04-13 17 views
5

Trong Python, bạn có thể làm:Python - ném ngoại lệ nếu bộ phận còn lại?

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

Có một cách viết tắt cho việc này? Nói cách khác, một cách để làm phân chia số nguyên ném một ngoại lệ nếu có phần còn lại?

Lý do tôi hỏi là nó sẽ được thuận tiện trong các tình huống như thế này:

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

Ngay bây giờ tôi cần phải thực hiện các biến tạm thời:

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

mà dường như không phải là rất pythonic.

Tôi biết rằng một số ngôn ngữ như C# có cách để thực hiện phân chia an toàn; kỳ lạ là Python không.

+2

Bạn có thể muốn được rõ ràng hơn về 'assert', chẳng hạn như nâng cao một ngoại lệ rõ ràng. Ít nhất, hãy nhớ rằng 'python -O' làm cho các câu lệnh' assert' bị bỏ qua (trong số những thứ khác). – kojiro

Trả lời

6

Bạn có thể làm:

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

Brilliant! Mặc dù nó được xây dựng trong, tôi không bao giờ biết về divmod. Cảm ơn. – Billy

Các vấn đề liên quan