字典。创建一个字典,将前n个计数数字映射到它们的平方

2024-10-01 15:38:27 发布

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

for n in raage(n):
    if n==0:
        pass
    else:
        squares={i:i*i for i in xrange(n)}
dict[n]=squares

这里有一个问题:创建一个字典,将前n个计数数字映射到它们的平方。把字典和可变方块联系起来。在

我的代码怎么了?在


Tags: 代码inforif字典数字passelse
2条回答

你的代码最大的问题是你没有真正回答问题。这个问题要求你找出第一个n数字的平方,并将这些数字映射到平方。相反,您的代码会为每个循环查找从0n的每个数字的平方。在

但是,您不必编写普通的for循环,而是可以通过使用字典理解来大大简化代码:

>>> def map_nums_to_squares(n):
    return {i: i * i for i in range(n + 1)}

>>> map_nums_to_squares(2)
{0: 0, 1: 1, 2: 4}
>>> map_nums_to_squares(5)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
>>> map_nums_to_squares(10)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
>>> 
>> squares={i:i*i for i in xrange(10)}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

是你真正需要的。它被称为字典理解,是for loop的糖语法。在

至于您的代码,您没有在第1行正确拼写range,或者您有一个名为raage的生成器。您也不应该将n传递到第一行,然后将n重新分配给for循环中的临时行。for not_n in range(n)是你应该怎么做的。另外,如果你只给n=0,那么当你离开for loop时,squares没有被分配。也不要使用dict作为变量名,因为它是Python中的关键字。在

相关问题 更多 >

    热门问题