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