2013-05-02 7 views
0

Je reçois une erreur bizarre lorsque j'essaie d'ouvrir un fichier dans mon programme python même s'ils sont dans le même répertoire. Voici mon code:Ouvrir des fichiers en Python

def main(): 
#filename = input("Enter the name of the file of grades: ") 

file = open("g.py", "r") 
for line in file: 
    points = 0 

    array = line.split() 

    if array[1] == 'A': 
     points = array[2] * 4 
    elif array[1] == 'B': 
     points = array[2] * 3 
    elif array[1] == 'C': 
     points = array[2] * 2 
    elif array[1] == 'D': 
     points = array[2] * 1 

    totalpoints += points 
    totalpointspossible += array[2]*4 

gpa = (totalpoints/totalpointspossible)*4 
print("The GPA is ", gpa) 

file.close() 

main() 

ce qui est l'erreur que je reçois:

Traceback (most recent call last): 
File "yotam2.py", line 51, in <module> 
main() 
File "yotam2.py", line 28, in main 
file = open(g.py, "r") 
NameError: global name 'g' is not defined 

Je ne suis pas tout à fait sûr pourquoi il dit g ne se définit pas, même si elle est dans le même répertoire comme mon fichier python.

+0

Vous pouvez fixer les espaces dans votre code. Et il semble que vous ayez aussi des variables non définies? –

Répondre

5

g.py doit être une chaîne:

file = open("g.py", "r") 

En outre, array est une liste de chaînes. chaînes par des entiers simplement en multipliant les doublons:

>>> "1" * 4 
"1111" 

Vous devez convertir array (qui est pas un tableau, par la voie) dans une liste de numéros:

array = [int(n) for n in line.split()] 
+0

ahh bonne prise, mais toujours l'erreur – sbru

+1

@bagelboy: Probablement un 'TypeError' près de' totalpoints + = points'? – Blender

+0

J'ai mis à jour le code et l'erreur dans la question initiale – sbru

0

Vous pouvez joindre g.py entre guillemets.

L'interpréteur pense que g est une variable que vous référencez plutôt qu'un nom de fichier que vous voulez référencer.

0

g.py doit être remplacé par "g.py" et totalpoints doivent être initialisées

Questions connexes