我正在尝试取两个输入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?
答案 0 :(得分:2)
您正在检查之前更改变量,因此,您正在检查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)
答案 1 :(得分:0)
您的代码未考虑34、19,因为您没有将它们保存在列表“ new”中。首先,您要进行操作//和*这意味着列表'new'中的第一个元素是操作的第一个结果
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 < 1:
break
if b % 2 == 1:
new = [a]
for i in new:
x += i
b //= 2
a *= 2
print(x)