【问题标题】:Keeping original input in consideration for final product考虑到最终产品的原始输入
【发布时间】:2019-09-17 13:18:47
【问题描述】:

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

【问题讨论】:

  • 在第一次迭代中检查 if 语句之前,您正在划分您的数字。在对 a 和 b 进行任何操作之前,您需要检查条件。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您的代码不考虑 34、19,因为您没有将它们保存在“新”列表中。首先你在做opetarions //和*这意味着你在列表'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)
    

    【讨论】:

      猜你喜欢
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2020-07-09
      • 2016-09-11
      • 1970-01-01
      • 2020-10-06
      相关资源
      最近更新 更多