Сохранение оригинального вклада в рассмотрение для конечного продукта - PullRequest
2 голосов
/ 28 апреля 2019

Я пытаюсь взять два входа, 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. Почему мой код не учитывает 34, 19 при прохождении второго оператора if?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Вы изменяете свои переменные перед проверкой, таким образом, вы проверяете 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)
0 голосов
/ 29 апреля 2019

Ваш код не учитывает 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...