大家好我有点陷入逻辑问题。
标准是:
编写一个程序,要求用户输入一些测试分数。该程序应显示每个分数的字母等级和平均测试分数。在程序中编写以下函数:
calc_average - 此功能应要求用户输入测试分数,直到没有更多分数输入,打印每个测试分数的字母等级,并返回所有测试分数的平均值。 determine_grade - 此函数应接受测试分数作为参数,并根据以下评分等级返回分数的字母等级:
分数表:
90 - 100 A. 80 - 89 B. 70-79 C 60 - 69 D. 低于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))
答案 0 :(得分:2)
为什么不在两者之外进行循环和输入(实际上我平均放弃了,因为平均运行是危险的)?
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
。使用if
(请参阅determine_grade
c
的输入会导致无限循环。固定的。