2016-04-14 79 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方法将一个项目添加到列表的末尾(一个可迭代的或不可迭代的)。