2016-03-06 37 views
-2

因此,在生成以下錯誤時運行代碼。 它表示NameError未被用戶代碼處理。如何在Python中解決未處理的NameError問題

錯誤:

Traceback (most recent call last): 
File "D:\3rd sem\Object Oriented Programming\Lab\VS\PythonApplication1\PythonApplication1\PythonApplication1.py", line 50, in <module> 
main() 
File "D:\3rd sem\Object Oriented Programming\Lab\VS\PythonApplication1\PythonApplication1\PythonApplication1.py", line 10, in main 

grade=str(input("Enter the grade: ")) 
File "<string>", line 1, in <module> 
NameError: name 'a' is not defined 

的代碼是這樣的:

classnum=int(input("Enter the num of classes: ")) 

def main(): 
totalcredit=0 
totalgpa=0 

for i in range(1,classnum+1): 
    print "class", i 
    credit=int(input("Enter the credit: ")) 
    grade=str(input("Enter the grade: ")) 
    totalgpa+=coursePoints(credit,grade) 
    totalcredit+=credit 

totalcourse=classnum 
semestergpa=totalgpa/totalcredit 
print("Semester summary") 
print("courses taken: ", classnum) 
print("credits taken: ", totalcredit) 
print("GPA points: ", totalgpa) 
print("Semester GPA: ", semestergpa) 

def coursePoints(Credit,Grade): 
    if Grade == 'A+' or Grade == 'a+': 
     return 4*Credit 
    elif Grade == 'A' or Grade == 'a': 
     return 4*Credit 
    elif Grade == 'A-' or Grade == 'a-': 
     return 3.67*Credit 
    elif Grade == 'B+' or Grade == 'b+': 
     return 3.33*Credit 
    elif Grade == 'B' or Grade =='b': 
     return 3*Credit 
    elif Grade == 'B-' or Grade == 'b-': 
     return 2.67*Credit 
    elif Grade == 'C+' or Grade == 'c+': 
     return 2.33*Credit 
    elif Grade == 'C' or Grade == 'c': 
     return 2*Credit    
    elif Grade == 'C-' or Grade == 'c-':       
     return 1.67*Credit     
    elif Grade =='D+' or Grade == 'd+':      
     return 1.33*Credit     
    elif Grade == 'D' or Grade == 'd':       
     return 1*Credit      
    elif Grade == 'D-' or Grade == 'd-':         
     return 0.33*Credit      
    else: 
     return 0 

main() 

的解決方案,任何人的幫助。

在此先感謝。

回答

1

你似乎使用Python 2.x的,所以你應該改變

grade=str(input("Enter the grade: ")) 

grade = raw_input("Enter the grade: ") 
+1

@霸wonSunuwar堆棧溢出是不是真的設計的背部和反覆的討論。它是爲小的具體問題和答案而設立的。如果您有新問題,請創建一個新帖子。然而,這就是說,我建議你在提出一個新問題之前,谷歌「在賦值之前引用的python變量」,因爲這是一個常見的錯誤。 – CoryKramer

+0

謝謝大家的建議 –

相關問題