Python:TypeError:'int'对象不可迭代 - 在For循环中

时间:2016-04-14 20:11:29

标签: python for-loop typeerror

好的,我已经看过很多关于这个主题的问题,但我找不到具体的问题答案。我有和TypeError一直困扰着我。在我的代码中,我一直试图非常天真地散列字符串,但我的挑战是在没有任何散列库和基本库(如“随机”或“时间”)的情况下(不知道为什么这是有用的)。到目前为止,这是我的代码:

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 个答案:

答案 0 :(得分:2)

替换

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

list.extend

list.append扩展了一个列表,import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation def data_gen(t=0): cnt = 0 while cnt < 1000: cnt += 1 t += 0.1 yield t, np.sin(2*np.pi*t) * np.exp(-t/10.) def init(): ax.set_ylim(-1.1, 1.1) ax.set_xlim(0, 10) del xdata[:] del ydata[:] line.set_data(xdata, ydata) return line, fig, ax = plt.subplots() line, = ax.plot([], [], lw=2) ax.grid() xdata, ydata = [], [] def run(data): # update the data t, y = data xdata.append(t) ydata.append(y) xmin, xmax = ax.get_xlim() if t >= xmax: ax.set_xlim(xmin, 2*xmax) ax.figure.canvas.draw() line.set_data(xdata, ydata) return line, ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10, repeat=True, init_func=init, save_count=0) plt.show() 在最后添加了一个项目。

答案 1 :(得分:1)

extend方法期望一个可迭代的(例如列表,元组或字符串),它会将iterable中的每个项添加到列表的末尾。 append方法将单个项添加到列表的末尾(可迭代或不可迭代)。