我正在尝试获取两个输入 a 和 b,并执行一个操作。我的代码如下:
a = int(input("Enter an integer A to be multiplied: "))
b = int(input("Enter an integer B to be multiplied: "))
x = 0
while True:
print(a, b)
b //= 2
a *= 2
if b < 1:
break
if b % 2 == 1:
new = [a]
for i in new:
x += i
print(x)
如果我输入 34 和 19,输出是:
Enter an integer A to be multiplied: 34
Enter an integer B to be multiplied: 19
34 19
68 9
136 4
272 2
544 1
612
答案应该是 646,因为 19%2 的余数是 1。为什么我的代码在执行第二个 if 语句时不考虑 34、19?
您在检查之前更改变量,因此,您正在检查 b//2
和 a*2
。
您可以将它们分配给临时变量或稍微更改您的代码:
a = int(input("Enter an integer A to be multiplied: "))
b = int(input("Enter an integer B to be multiplied: "))
x = 0
while True:
print(a, b)
if b % 2 == 1:
new = [a]
for i in new:
x += i
b //= 2
a *= 2
if b < 1:
break
print(x)
我是一名优秀的程序员,十分优秀!