Python 为什么我的;总数;变量未定义?
说到python,我还是一个新手,我的代码在运行时给了我一个错误。它告诉我,总数是没有定义的Python 为什么我的;总数;变量未定义?,python,Python,说到python,我还是一个新手,我的代码在运行时给了我一个错误。它告诉我,总数是没有定义的 def main(): total = 0 avg = 0 abc_grade = 0 def calc_average(total): return total / 5 def letterGrade(grade): if 90 <= grade <= 100: return "A" elif 80 <= grade
def main():
total = 0
avg = 0
abc_grade = 0
def calc_average(total):
return total / 5
def letterGrade(grade):
if 90 <= grade <= 100:
return "A"
elif 80 <= grade <= 89:
return "B"
elif 70 <= grade <= 79:
return "C"
elif 60 <= grade <= 69:
return "D"
else:
return "F"
while(True):
grade = int(input("Enter a Grade: "))
total += grade
avg = calc_average(total)
abc_grade = letterGrade(grade)
print("Average: " +str(avg))
print("Grades: " +str(abc_grade))
main()
def main():
总数=0
平均值=0
abc_等级=0
def calc_平均值(总计):
返回总数/5
def字体等级(等级):
如果90未在外部范围内定义,则while
循环在外部范围内定义。您可以将while
循环包装到函数中,并从main
调用它,或者用以下内容替换main
:
total = 0
avg = 0
abc_grade = 0
i、 e.在全局范围内定义变量。首先调用while循环
语句total+=grade
是发生错误的地方,因为total尚未初始化。在while循环之前添加total=0
total = 0 #Defining total
while(True):
grade = int(input("Enter a Grade: "))
total += grade
avg = calc_average(total)
abc_grade = letterGrade(grade)
另一方面,请注意while循环无限执行,而main()
不会执行。因此,您的程序流程如下所示:
如果为True,则添加一些内容并进行平均并打印结果。然后运行main方法
缩进在python中非常重要,因此,通过使while循环与Main()处于相同的缩进位置,您可以首先运行所有缩进。所以你的程序第一次看到total是在你说total+=grade的时候
我怀疑你的意思是,所有这些,而逻辑是你的主要方法的一部分,看起来像这样:
def main():
total = 0
avg = 0
abc_grade = 0
input = 5
while(input > 0):
grade = int(input("Enter a Grade: "))
total += grade
input -= 1
avg = calc_average(total)
abc_grade = letterGrade(grade)
print("Average: " +str(avg))
print("Grades: " +str(abc_grade))
def calc_average(total):
return total / 5
def letterGrade(grade):
if 90 <= grade <= 100:
return "A"
elif 80 <= grade <= 89:
return "B"
elif 70 <= grade <= 79:
return "C"
elif 60 <= grade <= 69:
return "D"
else:
return "F"
main()
def main():
总数=0
平均值=0
abc_等级=0
输入=5
而(输入>0):
等级=整数(输入(“输入等级:”)
总数+=年级
输入-=1
平均值=计算平均值(总计)
abc_等级=字母等级(等级)
打印(“平均:+str(平均))
打印(“等级:+str(abc_等级))
def calc_平均值(总计):
返回总数/5
def字体等级(等级):
如果90main()函数中的变量define仅在main函数中可用。您可以在主函数中移动引用total的代码来解决此问题
def main():
total = 0
avg = 0
abc_grade = 0
grade = int(input("Enter a Grade: "))
total += grade
avg = calc_average(total)
abc_grade = letterGrade(grade)
print("Average: " + str(avg))
print("Grades: " + str(abc_grade))
def calc_average(total):
return total / 5
def letterGrade(grade):
if 90 <= grade <= 100:
return "A"
elif 80 <= grade <= 89:
return "B"
elif 70 <= grade <= 79:
return "C"
elif 60 <= grade <= 69:
return "D"
else:
return "F"
while(True):
main()
def main():
总数=0
平均值=0
abc_等级=0
等级=整数(输入(“输入等级:”)
总数+=年级
平均值=计算平均值(总计)
abc_等级=字母等级(等级)
打印(“平均:+str(平均))
打印(“等级:+str(abc_等级))
def calc_平均值(总计):
返回总数/5
def字体等级(等级):
如果90事实上你的代码有很多错误
- 首先,正如我在您的问题的评论会话中已经提到的,您的
total
变量是您的main
函数的局部变量,因此无法在全局独家新闻中访问。这是一本书
- 这里还有一个无限的while循环。你应该考虑阅读,这表明当你满意的时候如何走出循环。
话虽如此,我建议您将while循环移动到main()
函数中,并使用上面链接中的方法之一在完成后中断while循环。大概是这样的:
def main():
# variable declaration
total = 0
avg = 0
abc_grade = 0
while(True):
# do something
....
# break out when done
print("Average: {avg}".format(avg=avg)
最后但并非最不重要的一点是,您应该使用string+str(expression)
在print
函数中连接字符串,有更好的方法可以做到这一点。我建议您这样使用:
def main():
# variable declaration
total = 0
avg = 0
abc_grade = 0
while(True):
# do something
....
# break out when done
print("Average: {avg}".format(avg=avg)
您的total
变量是main的本地变量,无法在全局独家新闻中访问