我爲一個數字的每個數字寫了下面的程序。但是,它顯示一個錯誤,因爲「int」對象是不可迭代的。Python中的TypeError編程
def square_digits(num):
a = 1
for i in num:
a = i * i
return a
result = square_digits(12)
print(result)
我爲一個數字的每個數字寫了下面的程序。但是,它顯示一個錯誤,因爲「int」對象是不可迭代的。Python中的TypeError編程
def square_digits(num):
a = 1
for i in num:
a = i * i
return a
result = square_digits(12)
print(result)
您正在尋找range(num)
函數。
您可能還想使用list
(表示爲[brackets, and, commas]
)。
試試這個,例如:
my_list = [] # empty list
for char in 'aword':
my_list.append(char * 2)
print(my_list)
或將真正Python的您可以逐步通過數據,並在同一時間列表解析創建列表。你可以把它像一個在線for
環路返回list
:
result = [char * 2 for char in 'aword']
print(result)
第一部分(char * 2
)告訴你在列表中的每個條目想要什麼。在你的情況下,這將是一些源數據的平方運算。第二部分(for char in 'aword'
)告訴你從哪裏獲取源數據。在你的情況下,它將是range(num)
。
第一關,這是如何解決你的代碼:
如果你想開始從1至NUM平方數的列表:
`
def square_digits(num):
# initialize an empty list
a = []
# why num + 1 when you want numbers until num? check out this link for an explanation
# on how to use and the different uses of the range() function
# http://pythoncentral.io/pythons-range-function-explained/
for i in range(1, num + 1):
# square the numbers beginning from 1,
squared_i = i * i
# and then add the result to the list that we have
a.append(squared_i)
# after everything is done, return the list
return a
result = square_digits(12)
print(result)
`
在你前面的例子中,你基本上試圖使這項工作:
`
for i in 12:
square_result = i * i
print ("the square of " + str(i) + " is " + str(square_result))
`
這是行不通的,因爲你想迭代月12日,這是一個int
但是,如果你這樣做:
`
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]:
square_result = i * i
print ("the square of " + str(i) + " is " + str(square_result))
`
那麼你將有更好的效果,因爲你的列表上進行迭代。
做上面的例子中較短的方法是:
`
num = 12
for i in range(1, num + 1):
square_result = i * i
print ("the square of " + str(i) + " is " + str(square_result))
`
這也應該工作,因爲range(1, num + 1)
應在python2返回列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
如果num = 12
。然而,在python3中,range函數不會返回一個列表,相反,它會返回一些可以像列表一樣爲這個問題迭代的東西。
但是,我不能肯定它是否是一個列表中尋找結果,如果沒有,請隨時澄清你的問題,希望其他人也可以插入內容。
請注意,如果他正在使用Python 3,正如他的'print'語句中的parens所建議的那樣,'range'不會返回一個列表,但實際上會生成一個列表。 –
感謝您的支持。我在回答中添加了一些澄清性說明以涵蓋此事實。 –
非常感謝你BB :) – Imrankhan
好,'int's真的AREN不可迭代...你能給出一個示例輸入和你想要得到的輸出嗎? – Mureinik