在使用Python2进行乘法运算时,我无法计算进位数。我试图调整一个程序,我已经做了计数携带任何加法问题,但我似乎仍然无法使它工作。我目前正在学习Python的基础知识,所以我使用的是非常简单的东西。任何关于如何将此程序转换为应用于乘法的建议都将不胜感激!在
以下是我的加法程序计数:
if len(str(x)) != len(str(y)):
if len(x) > len(y):
while len(x) > len(y):
y = '0' + y
else:
while len(y) > len(x):
x = '0' + x
z = int(x) + int(y)
counter = 0
carries = 0
i = len(str(x))
while i > 1:
i -= 1
added = int((x[i])) + int((y[i])) + counter
if added > 9:
carries +=1
counter = 1
else:
counter = 0
print str(x), '+', str(y), '=', z
print 'Number of carries: ', str(carries)
我做了与@techguy相同的假设,尽管我处理问题的方式不同。我选择使用递归方法而不是迭代方法,因为对于这类问题来说,这更自然。在
如果我们正在计算加法阶段发生的进位,那么我们需要将用于计数加法进位的逻辑封装在一个方法中,如下所示:
count_addition_carries_rec
方法是通用的,因为它可以接受2个以上的整数。nums参数是一个列表,该方法期望它的长度为2或更长。在计算乘法进位的方法如下:
^{pr2}$count_multiplication_carries_rec
不像加法方法那样通用,但是可以很容易地修复它。您可以创建一个一次用2个数字调用count_multiplication_carries_rec
的辅助方法,也可以修改当前实现以处理任意数量的整数。在使用这两种方法的示例:
如您所见,这些方法返回加法/乘法运算的结果以及执行该操作时发生的进位数。在
我假设,通过进位的次数,你想知道一次进位发生了多少次,而不是进位总数。例如,34×48的第一步有一个乘法进位(当4和8相乘时携带3),即使总进位值等于3。在
另外,我假设你还想知道做乘法运算时发生的加法进位数。继续我们的例子,当我们乘以34*40时,我们有一个乘法进位(4*4)。我们现在需要添加两个结果(272和1360)。这将导致一个额外的进位,进位操作的总数等于3。在
基本上,我计算总进位数,不包括超过最大数的进位。这意味着90*9没有任何进位。同样,90+99也不会有任何进位。我是根据你的加法运算方式决定的。如果您不希望发生这种情况,并且希望包含最后一位的进位,只需按照
**** ... ****
注释中所述的代码更改进行操作。在代码如下。我包含了我自己的计算加法进位的实现。它应该在功能上等同于您发布的代码。在
上述代码的输出为:
^{pr2}$相关问题 更多 >
编程相关推荐