python - 如何计算负整数或零的所有数字的乘积?
问题描述
我需要计算一个整数的所有数字的乘积。算法很简单。可以看到 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)
我正在寻找没有额外变量的解决方案。
解决方案
您需要检查 n 是正数还是负数。基于此mult
将是1
or -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
推荐阅读
- postgresql - 在 Ecto for Postgres [Elixir] 中为二进制类型添加默认值
- html - 视口和设备宽度:是否可以对高度和宽度做出响应?
- sql-server - SQL Server:如何将同一列中的数据排序为某些数据的升序和其他数据的降序?
- python - 获取 SSL:将 python 与 Apache NIFI rest api 一起使用时出现 CERTIFICATE_VERIFY_FAILED
- swift - 如何在另一个文件(Swift)中加载 inViewDidLoad 后更新值?
- angular - 如何使用 NgRX 数据更新存储?
- c# - & 1 的效率超过 % 2
- python - 使用 natsort 对 python 中的字母数字值进行排序
- javascript - 如何使用javascript根据http状态显示消息?
- oracle - Oracle中列的数据长度是多少 - 表设计