即使在使用 if 语句避免被 0 除后,python 函数中的除法错误仍为零
Zero division error in python function even after using if-statement to avoid division by 0
我正在编写一个函数,该函数 returns 可以除以它所属的整数的总位数(整数)。
对于前整数 -111
count - 3 因为所有 1,1,1 除以 111
整数 - 103456
计数 - 2 只能被 1,4 整除。
为了处理除以 0 的特殊情况,我使用了 if-else 语句。但是,我仍然遇到除零错误。为什么我仍然收到此错误?
我的错误信息:-ZeroDivisionError:integer division or modulo by zero
我的代码-
count=0
divisors_list=[]
number_in_string = str(n)
divisors_list=list(number_in_string)
for divisor in divisors_list:
if divisor != 0:
if n%int(divisor) == 0:
count+=1
return count
x=findDigits(103456)
int(divisor)
可以是 0
即使 divisor != 0
.
>>> divisor = 0.5
>>> int(divisor)
0
我建议请求原谅而不是允许,然后抓住 ZeroDivisionError
。
try:
if n%int(divisor) == 0:
count += 1
except ZeroDivisionError:
pass
问题是将字符串作为整数使用不当。
修复代码的一种方法是:
def findDigits(n):
count = 0
number_in_string = str(n)
divisors_list = list(number_in_string)
for divisor in divisors_list:
# *** at this point, divisor is a string ***
divisor = int(divisor) # <== cast it to int
if divisor != 0:
if n % divisor == 0:
count += 1
return count
我正在编写一个函数,该函数 returns 可以除以它所属的整数的总位数(整数)。
对于前整数 -111
count - 3 因为所有 1,1,1 除以 111
整数 - 103456
计数 - 2 只能被 1,4 整除。
为了处理除以 0 的特殊情况,我使用了 if-else 语句。但是,我仍然遇到除零错误。为什么我仍然收到此错误?
我的错误信息:-ZeroDivisionError:integer division or modulo by zero
我的代码-
count=0
divisors_list=[]
number_in_string = str(n)
divisors_list=list(number_in_string)
for divisor in divisors_list:
if divisor != 0:
if n%int(divisor) == 0:
count+=1
return count
x=findDigits(103456)
int(divisor)
可以是 0
即使 divisor != 0
.
>>> divisor = 0.5
>>> int(divisor)
0
我建议请求原谅而不是允许,然后抓住 ZeroDivisionError
。
try:
if n%int(divisor) == 0:
count += 1
except ZeroDivisionError:
pass
问题是将字符串作为整数使用不当。
修复代码的一种方法是:
def findDigits(n):
count = 0
number_in_string = str(n)
divisors_list = list(number_in_string)
for divisor in divisors_list:
# *** at this point, divisor is a string ***
divisor = int(divisor) # <== cast it to int
if divisor != 0:
if n % divisor == 0:
count += 1
return count