python - 俄罗斯农民乘法 Python 3.3

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

我需要一个 python 3.3 程序的帮助,该程序应该执行俄罗斯农民乘法/古埃及乘法。作业说,“如果“A”和“B”是要相乘的两个整数,我们重复将“A”乘以 2 再将“B”除以 2,直到“B”不能再除且不为零(整数除法)。在每组乘“A”和除“B”的过程中,如果“B”的值是奇数,则将“A”的值添加到总数中。最后,总和所有“A”值(当“B”为奇数时)应等于原始“A”和“B”输入的乘积。简而言之,求和“B”为奇数的所有“A”值它将等于(或接近)“A”和“B”的乘积。

编辑

我可能对某些问题的表述有误。

这是一个例子:

如果“A”为 34,“B”为 19,则每行将“A”乘以二,将“B”除以二。

“A”“B”

(34) (19)(“B”是奇数,加“A”到总数)

(68) (9)(“B”是奇数,加“A”到总数)

(136) (4) (“B”为偶数,忽略“A”值)

(272) (2) (“B”为偶数,忽略“A”值)

(544) (1)(“B”是奇数,加“A”到总数)

当您对“A”的所有值求和时,“B”为奇数,您会得到 (34 + 68 + 544 = 646), 这等于将“A”和“B”相乘,(34 * 19 = 646)。

当“B”为奇数时,我遇到的问题是将“A”加到总数中。

这是我目前的情况,

x = int(input("What is the first number? "))
y = int(input("What is the second number? "))
answer = 0

while y != 0:
    if (y%2 != 0):
        x*2
        y//2
        answer == answer + x
    if (y%2 == 0):
        x*2
        y//2
print("the product is",(answer))

我是 python 和编程的新手,因此非常感谢任何帮助和/或解释为什么它的错误。

最佳答案

你需要先添加x来回答,然后再更新x

这是正确的代码

x = int(input("What is the first number? "))
y = int(input("What is the second number? "))
answer = 0

while y != 0:
   if (y%2 != 0):
      answer=answer+x
      x=x*2
      y=y//2
   if (y%2 == 0):
      x=x*2
      y=y//2

print("the product is",(answer))

关于python - 俄罗斯农民乘法 Python 3.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638078/

相关文章:

python - 在 Python pandas 中,如何存储 value_counts 的列名称?

python - 我们如何在Python中计算可能性?

python - 使用谷歌应用程序引擎和Python,如何检查复选框是否被标记?

python - 如何使用 HTTP 重定向传递信息(在 Django 中)

java - 在 Java 中使用 .equals()、.isEmpty() 和 .length() 检查空字符串

linux - 如何在 while 循环中实现 IF 语句,并保持 while 循环无限期运行? ( bash )

python - 每次运行python代码时都必须导入excel文件吗?

python - 拆开列表 Python

python - 从html文档中提取标签内的文本

javascript - If/Else 逻辑顺序 - Javascript 示例 - 请解释这两个代码块之间的区别