如何在Python中解决未处理的NameError问题

问题描述:

因此,在生成以下错误时运行代码。 它表示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() 

的解决方案,任何人的帮助。

在此先感谢。

你似乎使用Python 2.x的,所以你应该改变

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

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

@霸wonSunuwar堆栈溢出是不是真的设计的背部和反复的讨论。它是为小的具体问题和答案而设立的。如果您有新问题,请创建一个新帖子。然而,这就是说,我建议你在提出一个新问题之前,谷歌“在赋值之前引用的python变量”,因为这是一个常见的错误。 – CoryKramer

+0

谢谢大家的建议 –