for n in raage(n):
if n==0:
pass
else:
squares={i:i*i for i in xrange(n)}
dict[n]=squares
这是一个问题:创建一个字典,将前n个计数数字映射到它们的方块。将字典与变量正方形相关联。
我的代码出了什么问题?
答案 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的值。