【发布时间】:2013-01-16 06:43:26
【问题描述】:
我需要有关 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”乘以 2,然后将“B”除以 2。
“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 和编程非常陌生,因此非常感谢任何有关其错误原因的帮助和/或解释。
【问题讨论】:
-
您的代码不会重新分配
y或x。您需要将x*2和y//2分别替换为x = x*2和y = y//2。 -
没关系。我想我只是误解了你的解释。
-
您也没有分配给
answer。如果answer等于answer + x,您正在测试。使用单个=分配,或者更好的是,使用就地添加:answer += x。 -
将 2 设为变量,以便测试它是否适用于其他值。可以加分
-
当我问用户是否想用新的输入再次运行代码时,我怎样才能让它重复程序?
标签: python if-statement python-3.x while-loop