我一直试图测试参数测试分数,看看是否有任何测试低于50.如果是这样,它应该返回失败。如果平均值高于70并且没有测试低于50,那么它应该返回通过。
def course_grader(test_scores):
avg_grade = sum(test_scores) / len(test_scores)
if avg_grade >= 70 and test_scores >= 50:
print("pass")
elif avg_grade < 70 or test_scores < 50:
print("fail")
break
def main():
print(course_grader([100,75,45])) # "fail"
print(course_grader([100,70,85])) # "pass"
print(course_grader([80,60,60])) # "fail"
print(course_grader([80,80,90,30,80])) # "fail"
print(course_grader([70,70,70,70,70])) # "pass"
if __name__ == "__main__":
main()
我也试过使用for循环,但它给了我太多答案。
答案 0 :(得分:1)
您可以查看是否min(test_scores) >= 50
。如果min
高于或等于50,那么test_scores
中的int不会低于50。
此外,您的代码中存在三个问题。
首先,您可以在循环之外使用break
语句。这将引发SyntaxError
。
其次,您的功能不会返回任何可以print
的内容。您的main()
将输出&#39;通过&#39;或者&#39;失败&#39;然后为每个None
print
。您应该移除print
中的main()
或将course_grader()
替换为return
。
最后,您的elif
可以替换为else
。如果avg_grade >= 70 and test_scores >= 50
不是True
,则必须(或两者)avg_code is < 70
或test_score is < 50
。
答案 1 :(得分:1)
正如@Bill Bell所指出的那样,使用any
或all
函数可能会有用:
def course_grader(test_scores):
avg_grade = sum(test_scores) / len(test_scores)
if avg_grade >= 70 and all([x >= 50 for x in test_scores]):
print("pass")
elif avg_grade < 70 or any([x < 50 for x in test_scores]):
print("fail")