gpt4 book ai didi

python - 根据值更改操作长度

转载 作者:太空狗 更新时间:2023-10-30 01:10:57 25 4
gpt4 key购买 nike

上下文

我正在尝试创建一个程序来获取从左到右读取的数字中所有 n 对的乘积

例如在号码2345678中:

  • 所有 2 对的乘积为 2*3 = 6、3*4=12、4*5=20、5*6=30 等...
  • 所有 3 对的乘积为 2*3*4=24,3*4*5=60, 4*5*6=120 等等...

我已经完成了问题的大部分解决方案,但是我无法创建一个可以适应任何n值的操作

代码

num = 2345678
num = str(num)


n = 2
start_pos = 0

for i in range(start_pos,len(num)):
try:
x += 1
t = int(num[i]) * int(num[i+1]) # hardcoded for n = 2
print(t)
start_pos += 1
except IndexError:
break

不同n值的操作

n = 2: t = int(num[i]) * int(num[i+1])

n = 3: t = int(num[i]) * int(num[i+1]) * int(num[i+2])

n = 4: t = int(num[i]) * int(num[i+1]) * int(num[i+2]) * int(num [i+3])

n = 5: t = int(num[i]) * int(num[i+1]) * int(num[i+2]) * int(num [i+3]) * int(num[i+4])

我如何创建一个可以适应任何 n 值的操作?

最佳答案

如果你想要一个不使用任何 pythonic 运算符的迭代解决方案,你可以简单地添加一个内部 for 来从 i 迭代到 i+n,然后将数字的乘积累加到变量 t 中。像这样:

num = 2345678
num = str(num)


n = 3
start_pos = 0
x = 0
for i in range(start_pos,len(num)):
try:

t = 1
for j in range(i, i+n):
t = t * int(num[j])

print(t)

except IndexError:
break

输出:

24
60
120
210
336

关于python - 根据值更改操作长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54808613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com