最终产品考虑原始输入

时间:2019-04-28 20:55:25

标签: python python-3.x for-loop if-statement while-loop

我正在尝试取两个输入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?

2 个答案:

答案 0 :(得分:2)

您正在检查之前更改变量,因此,您正在检查b//2a*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)