Python 逻辑问题:考试成绩
Python Logic Issue: Test Scores
大家好,我遇到了一个逻辑问题。
标准是:
编写一个程序,要求用户输入一些测试分数。该程序应显示每个分数的字母等级和平均考试分数。在程序中编写如下函数:
calc_average - 这个函数应该要求用户输入测试分数,直到没有更多的分数可以输入,打印每个测试分数的字母等级,以及 return 所有的平均值测试成绩。
determine_grade - 此函数应接受测试分数作为参数,return 分数的字母等级,基于以下评分标准:
分数等级:
90 - 100 安
80 - 89 乙
70 - 79 摄氏度
60 - 69 岁
华氏 60 以下
所以我的想法是我必须创建两个函数 calc_average 和 determine_grade。
问题是,通过在 calc_average() 之上设置 determine_grade(),一旦从 calc_average() 输入的分数不能传递到 determine_grade( ) 等字母等级无法确定并传回打印。所以这个问题看起来无法解决(至少如果按照说明去做的话)。
请帮我想办法。谢谢
到目前为止我的代码(尚未完成):
def determine_grade(grade):
while 90 <= grade <= 100:
g = "A"
while 80 <= grade <= 89:
g = "B"
while 70 <= grade <= 79:
g = "C"
while 60 <= grade <= 69:
g = "D"
while grade < 60:
g = "F"
return g
def calc_average():
c = "y"
t = 0
count = 0
while c == "y" or c == "Y":
s = float(input("Enter score: "))
t +=s
count += 1
g = determine_grade(s)
print("Grade: " .format(g))
avg = t/count
return avg
a = calc_average()
print("Average: {0:.2f}" .format(a))
为什么不在两者之外设置循环和输入(实际上我放弃了平均,因为 运行 平均是危险的)?
def determine_grade(grade):
if 90 <= grade <= 100:
return "A"
if 80 <= grade <= 89:
return "B"
if 70 <= grade <= 79:
return "C"
if 60 <= grade <= 69:
return "D"
if grade < 60:
return "F"
return "error"
def main():
grades = []
cont = input("continue ('y')?")
while cont == "y" or cont == "Y":
grade = float(input("Enter score: "))
print("Grade: " + determine_grade(grade))
grades.append(grade)
cont = input("continue ('y')?")
print("Average: {0:.2f}" .format(sum(grades) / len(grades)))
更改:
- while 循环现在在函数之外。因此,您可以将主上下文中的任何内容传递给任何函数。
- 如果您想立即检查条件和 return,则不需要
while
。使用 if
(参见 determine_grade
- 不接受
c
的输入会导致无限循环。固定。
大家好,我遇到了一个逻辑问题。
标准是:
编写一个程序,要求用户输入一些测试分数。该程序应显示每个分数的字母等级和平均考试分数。在程序中编写如下函数:
calc_average - 这个函数应该要求用户输入测试分数,直到没有更多的分数可以输入,打印每个测试分数的字母等级,以及 return 所有的平均值测试成绩。 determine_grade - 此函数应接受测试分数作为参数,return 分数的字母等级,基于以下评分标准:
分数等级:
90 - 100 安 80 - 89 乙 70 - 79 摄氏度 60 - 69 岁 华氏 60 以下
所以我的想法是我必须创建两个函数 calc_average 和 determine_grade。
问题是,通过在 calc_average() 之上设置 determine_grade(),一旦从 calc_average() 输入的分数不能传递到 determine_grade( ) 等字母等级无法确定并传回打印。所以这个问题看起来无法解决(至少如果按照说明去做的话)。
请帮我想办法。谢谢
到目前为止我的代码(尚未完成):
def determine_grade(grade):
while 90 <= grade <= 100:
g = "A"
while 80 <= grade <= 89:
g = "B"
while 70 <= grade <= 79:
g = "C"
while 60 <= grade <= 69:
g = "D"
while grade < 60:
g = "F"
return g
def calc_average():
c = "y"
t = 0
count = 0
while c == "y" or c == "Y":
s = float(input("Enter score: "))
t +=s
count += 1
g = determine_grade(s)
print("Grade: " .format(g))
avg = t/count
return avg
a = calc_average()
print("Average: {0:.2f}" .format(a))
为什么不在两者之外设置循环和输入(实际上我放弃了平均,因为 运行 平均是危险的)?
def determine_grade(grade):
if 90 <= grade <= 100:
return "A"
if 80 <= grade <= 89:
return "B"
if 70 <= grade <= 79:
return "C"
if 60 <= grade <= 69:
return "D"
if grade < 60:
return "F"
return "error"
def main():
grades = []
cont = input("continue ('y')?")
while cont == "y" or cont == "Y":
grade = float(input("Enter score: "))
print("Grade: " + determine_grade(grade))
grades.append(grade)
cont = input("continue ('y')?")
print("Average: {0:.2f}" .format(sum(grades) / len(grades)))
更改:
- while 循环现在在函数之外。因此,您可以将主上下文中的任何内容传递给任何函数。
- 如果您想立即检查条件和 return,则不需要
while
。使用if
(参见determine_grade
- 不接受
c
的输入会导致无限循环。固定。