2016-04-14 75 views
0

好的,我已經看過很多關於這個主題的問題,但我找不到具體的答案給我的查詢。我有和TypeError一直困擾着我。在我的代碼中,我一直試圖非常天真地對一個字符串進行散列,但我的挑戰是沒有任何散列庫和基本庫,如「隨機」或「時間」(不知道爲什麼這很有用)。這裏是我的代碼到目前爲止:Python:TypeError:'int'對象不可迭代 - For循環

import random 
char_array = "Hello World!" 
hash_lvl = random.getrandbits(15) 

def hash (lvl, string, len_string): 
    a = 9 
    b = 2 
    new_array = [] 

    for d in range(0, len_string): 
     new_array.extend(d) 
    for c in range(0, len_string): 
     globals()['string%s' % c] = (lvl/a)+(lvl*b) 
     a=a-1 
     b=b+1 

print(char_array[0:]) 

if len(char_array) > 20: 
    print("You may not hash after 20 digits.") 
elif len(char_array) < 21: 
    print("Hashing:") 
    hash(hash_lvl, char_array, len(char_array)) 

函數內的for循環造成了這個,所以如果你可以找回我,我將不勝感激。

回答

2

更換

for d in range(0, len_string): 
    new_array.extend(d) 

for d in range(0, len_string): 
    new_array.append(d) 

list.extend到位延伸的名單,list.append末增加了一個項目。

1

擴展方法需要一個可迭代的(例如列表,元組或字符串),這會將迭代中的每個項添加到列表的末尾。 append方法將一個項目添加到列表的末尾(一個可迭代的或不可迭代的)。