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

时间:2017-06-14 16:49:18

标签: python

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

这是一个问题:创建一个字典,将前n个计数数字映射到它们的方块。将字典与变量正方形相关联。

我的代码出了什么问题?

3 个答案:

答案 0 :(得分:2)

>> 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,那么当您离开squares时,for loop并不会分配。也不要将dict用作变量名,因为它是Python中的关键字。

答案 1 :(得分:0)

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

但是,不是编写正常的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}
>>> 

答案 2 :(得分:0)

这是我对这个问题所做的:

squares={}
m=n
t=1
while m!=0:
    squares[m]=m*m
    t+=1
    m-=1

我使用了与n不同的变量来跟踪循环需要运行多少次,因为它们由于某些原因不希望您更改n的值。