在一个范围内数字与平方的乘法

2024-10-01 11:41:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个范围内获得一个提供特定要求的列表 我的代码只能将列表中的数字相乘。 我想得到一个列表中数字的乘法“数字平方”

例如: 定义的范围=(1200)

通缉名单=[1^2,2^2,3^2,…,(34=3^2*4^2),(35=3^2*5^2),…,(199=1^2*9^2*9^2)]

这是我的代码:

def mult(liste):
    a=1
    for i in liste:
        a*=i       #I think the problem is here
    return a

listemm = [x for x in range(1,200)]
print(listemm)
qe= [mult(int(digit) for digit in str(numb)) for numb in listemm]
print(qe)

Tags: 代码in列表for定义数字printdigit
2条回答

你很接近。这里是你自己尝试的修正版本,范围可达30。问题是你的函数只工作了两位数。这里我使用if-else条件来检查数字是否小于10。如果是这样的话,我只需将它平方,否则我会将它发送给你的函数。你知道吗

在函数中,没有对数字进行平方运算。你也不需要listemm。你可以在你的列表理解中直接使用range。你知道吗

def mult(liste):
    a=1
    for i in liste:
        a*=i**2       # Square here (the problem was partly here)
    return a

qe= [numb**2 if numb<10 else mult(int(digit) for digit in str(numb)) for numb in range(1,30)]
print(qe)

# [1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 4, 16, 36, 64, 100, 144, 196, 256, 324]

我会这样做:

r = range(1, 200)


def reduce_prod(n):
    p = 1
    for i in str(n):
        p *= int(i)**2
    return p


wanted_list = [reduce_prod(x) for x in r]

产生:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 1, ...]
#                                 ^
#                                 from 10 -> 1^2 * 0^2 = 0

相关问题 更多 >