我是一名新程序员,所以这可能效率不高,但我发现这个问题对我来说很好奇。查看下面的函数 countDigitsCheck 并注意 if 语句正在检查变量 count_check_one 和变量 count_check_two 是否 == 1。如果它们都是 == 1,则它乘以 a * b。您可以在输出中看到 count_check_one == 3(不是 1)并且 count_check_two == 1。由于其中一个整数是 == 3,因此两个整数不应相乘。但是,您会在输出中注意到整数乘以 900。我知道如果我在 if 语句中使用“or”而不是“and”,我会期待这种行为,但当我使用“and”时不会。请帮助我理解为什么它们仍在成倍增加。谢谢。
def karatsubaAlgorithm(x,y):
return(countDigitsCheck(x,y))
def countDigitsCheck(one, two):
count_check_one = countDigits(one)
count_check_two = countDigits(two)
a = one
b = two
print(count_check_one)
print(count_check_two)
if count_check_one and count_check_two == 1:
answer = a * b
return(answer)
def countDigits(number):
Number = number
Count = 0
while(Number > 0):
Number = Number // 10
Count = Count + 1
return(Count)
check_function = karatsubaAlgorithm(100,9)
print(check_function)
OUTPUT:
3
1
900