2010-03-26 10 views
0

je peux taper le code suivant dans le terminal, et il fonctionne:Python 3 avec la fonction de gamme

for i in range(5): 
    print(i) 

Et il imprimera:

0 
1 
2 
3 
4 

comme prévu. Cependant, j'ai essayé d'écrire un script qui fait une chose semblable:

print(current_chunk.data) 
read_chunk(file, current_chunk) 
numVerts, numFaces, numEdges = current_chunk.data 
print(current_chunk.data) 
print(numVerts) 

for vertex in range(numVerts): 
    print("Hello World") 

current_chunk.data est obtenu à partir de la méthode suivante:

def read_chunk(file, chunk): 
    line = file.readline() 
    while line.startswith('#'): 
     line = file.readline() 
    chunk.data = line.split() 

La sortie en est:

['OFF'] 
['490', '518', '0'] 
490 
Traceback (most recent call last): 
    File "/home/leif/src/install/linux2/.blender/scripts/io/import_scene_off.py", line 88, in execute 
    load_off(self.properties.path, context) 
    File "/home/leif/src/install/linux2/.blender/scripts/io/import_scene_off.py", line 68, in load_off 
    for vertex in range(numVerts): 
TypeError: 'str' object cannot be interpreted as an integer 

Alors, pourquoi ne crache-t-il pas Hello World 490 fois? Ou est-ce que le 490 est considéré comme une chaîne?

J'ai ouvert le fichier comme ceci:

def load_off(filename, context): 
    file = open(filename, 'r') 

Répondre

2

'490' est une chaîne. Essayez int('490').

0

Soupir, peu importe, il s'est avéré être évalué par une chaîne. La modification de la boucle for à

for vertex in range(int(numVerts)): 
    print("Hello World") 

a permis de résoudre le problème.