Python 3.x 如何使用循环测试整数和列表元素?

Python 3.x 如何使用循环测试整数和列表元素?,python-3.x,average,Python 3.x,Average,我一直在尝试测试辩论测试分数,看看是否有任何测试低于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

我一直在尝试测试辩论测试分数,看看是否有任何测试低于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()
def课程评分器(测试分数):
平均分数=总和(测验分数)/长度(测验分数)
如果平均成绩>=70,测试成绩>=50:
打印(“通行证”)
elif平均分数<70或测试分数<50:
打印(“失败”)
打破
def main():
打印(课程评分器([100,75,45])#“失败”
打印(课程评分器([100,70,85])#“通过”
打印(课程评分器([80,60,60])#“失败”
打印(课程评分器([80,80,90,30,80])#“失败”
打印(课程评分器([70,70,70,70,70])#“通过”
如果名称=“\uuuuu main\uuuuuuuu”:
main()

我还尝试使用for循环,但它给了我太多的答案。

您可以检查
min(测试分数)>=50
。如果
min
大于或等于50,则
test_得分中不存在低于50的整数

另外,代码中有三个问题

首先,不能在循环外使用
break
语句。这将引发一个
语法错误

其次,函数不会返回任何可以打印的内容。您的
main()
将为每个
打印输出“通过”或“失败”,然后
None
。您应该删除
main()
中的
print
,或者在
course\u grader()
中将其替换为
return


最后,您的
elif
可以替换为
else
。如果
avg_grade>=70,test_score>=50
True
,那么必要的是
avg_代码<70
或者
test_score<50
,正如@Bill Bell所指出的,
任何
所有
函数在这里可能有用:

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")
def课程评分器(测试分数):
平均分数=总和(测验分数)/长度(测验分数)
如果平均成绩>=70且全部([x>=50,测试分数为x]):
打印(“通行证”)
elif平均分数<70或任何([x<50表示测试分数中的x]):
打印(“失败”)
任何([x