为了账号安全,请及时绑定邮箱和手机立即绑定

变量包含 0 并且不接受用户输入

变量包含 0 并且不接受用户输入

慕桂英546537 2021-09-11 17:32:12
我尝试计算学生的几个属性:学生人数学生的总分他们获得的最低、平均和最高分。然而,该变量mark仅显示 0。如何使用函数而不是 max() 和 min() 来解决这个问题?mark = 0a = 0student = 0a = int(input("Enter Marks :"))def maxx():    maxx = 0    for i in range(1, a):        if a> maxx :            maxx = a    return maxxdef minn():    minn = 0    for i in range(1, a):        if a < minn :            minn = a    return minnwhile (a >= 0):    mark = mark + a    student = student + 1    a = int(input("Enter Marks :"))print("Exit")print("Total students :", student)print ("The total marks is:", mark)average = mark/studentprint ("The average marks is:", average)print("The max marks is :", maxx())print("The min marks is :", minn())
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你的代码有很多问题。其中之一是


for i in range(1, a):

如果您想要最小值或最大值,这部分没有意义。您需要遍历成绩列表。

mark并且student考虑到它们可以分别替换为sum和,也是不必要的len。

整个代码似乎缺乏适当的结构。这是一个示例实现。如果不允许使用sumor len,您可以将自己的mark和student方法带回来,但尽量不要弄乱并保持可读性:


def maxx(grades):

    if (not grades): # if empty, we let the caller know 

        return None


    res = grades[0]  # we know the list is not empty


    for i in grades:

        if i > res:

            res = i

    return res


def minn(grades):

    if (not grades):

        return None


    res = grades[0]


    for i in grades:

        if i < res:

            res = i

    return res


def main():

    grades = []  # list of grades


    while (True):

        grade = int(input("Enter Mark: "))

        if (grade < 0): break

        grades.append(grade)


    student_cnt = len(grades)

    total = sum(grades)


    print("Exit")

    print("Total students :", student_cnt)

    print("The total marks is:", total)


    print ("The average marks is:", total / student_cnt)

    print("The max marks is :", maxx(grades))

    print("The min marks is :", minn(grades))



if __name__ == "__main__":

    main()

输入输出:


Enter Mark:  30

Enter Mark:  20

Enter Mark:  10

Enter Mark:  40

Enter Mark:  -1

Exit

Total students : 4

The total marks is: 100

The average marks is: 25.0

The max marks is : 40

The min marks is : 10


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号