2017-06-14 21 views
0
for n in raage(n): 
    if n==0: 
     pass 
    else: 
     squares={i:i*i for i in xrange(n)} 
dict[n]=squares 

這裏的字典是一個問題:創建前n計數數字映射到它們的平方的字典。將字典與可變方塊關聯。字典。創建前n計數數字映射到它們的平方

我的代碼有什麼問題?

+3

首先,你拼寫'range'錯誤 –

回答

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 not_n in range(n)是你應該怎麼做的。另外,如果你只給n=0然後squares當你走出for loop的不分配。也不要使用dict作爲變量名稱,因爲它是Python中的關鍵字。

0

與您的代碼的最大問題是,你沒有真正回答這個問題。這個問題要求你找出第一ñ數的平方,並且這些數字映射到廣場。相反,你的代碼找到方塊從至ň每一個循環的每個號碼。

但是,而不是寫一個正常的循環,可以大大使用字典理解簡化代碼:

>>> 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} 
>>>