首页 > 解决方案 > 如何计算负整数或零的所有数字的乘积?

问题描述

我需要计算一个整数的所有数字的乘积。算法很简单。可以看到 Python 的实现。

print("input number:")
n = int(input())
mult = 1
while (n!=0):
    mult = mult * (n % 10)
    n = n // 10
print("product is", mult)

问题。如何计算负整数或零的所有数字的乘积?

我的尝试是

print("input number:")
m = int(input())
n = abs(m)
mult = 1
while (n!=0):
    mult = mult * (n % 10)
    n = n // 10
if (m==0):
    print("product is", 0)
elif (m>0):
    print("product is", mult)
else:
    print("product is", -mult)

我正在寻找没有额外变量的解决方案。

标签: python

解决方案


您需要检查 n 是正数还是负数。基于此mult将是1or -1。其余的将照常进行。

print("input number:")
n = int(input())
mult = 1 if n==abs(n) else -1
n=abs(n)
while (n!=0):
    mult = mult * (n % 10)
    n = n // 10

print("product is", mult)

或者,您可以使用math.prod来计算产品。

import math
print("input number:")
n = int(input())
mult = (1 if n==abs(n) else -1) * math.prod([int(i) for i in str(abs(n))])
print ('product is', mult)

这将给出:

input number:
32
product is 6

input number:
-32
product is -6

如果你想使用functools.reduce,那么你可以做到。

from functools import reduce
print("input number:")
n = int(input())
mult = (1 if n==abs(n) else -1) * reduce(lambda x, y: x * y, [int(i) for i in str(abs(n))], 1)
print ('product is', mult)

输出将是:

input number:
32
product is 6

input number:
-32
product is -6

input number:
503
product is 0

推荐阅读