一个整数,如:

number = 1873

我有一个公式:weighted_sum = 1*1 + 8*2 + 7*3 + 3*4 = 50。我想计算四位数的加权和,所以输出看起来像:
1234 weighted sum: 30 / 4321 weighted sum:20

我试图将整数转换为字符串,但没有奏效。
number = str(1742)
weighted = number[0]*1 + number[1]*2 + number[2]*3 + number[3]*4
print(number, "weighted sum:", weighted)

输出
1742 Weight Sum: 1774442222

最佳答案

在将它们相乘之前,您需要将单个数字转换回整数:

weighted = int(number[0])*1 + int(number[1])*2 + int(number[2])*3 + int(number[3])*4

只取 number[i] 会给你一个带有那个数字的单字符字符串,在 Python 中乘以一个字符串 bt n 意味着将它连接 n 次。

这可以使用 sum() 和生成器表达式来简化:
weighted = sum(i * int(digit) for i, digit in enumerate(number, 1))

关于python - 在python中操作整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45674659/

10-15 22:51