我想得到两个及格分数的平均分。输出应为:
以下是我目前为止的代码:
def passing_grade(grade1,grade2):
'''(number, number)--> number
This function definition prints the average of all passing grade(s)
'''
# Function 1 - If both numbers are outside the grading range (0-100)
if 0.0 < grade1 > 100.0 and 0 < grade2 > 100.0:
print ('Not available grading')
elif 0.0 >= grade1 <= 50.0 and 0.0 >= grade2 <= 50.0:
print (0.0)
#Function 2 - If one of the grades is passing then, print passing grade
elif 0.0 >= grade1 <= 50.0 and 0.0 >= grade2 >= 50.0:
print (grade2)
elif 0.0 >= grade1 >= 50.0 and 0.0 >= grade2 <= 50.0:
print (grade1)
#Function 3 - If both grades are passing >50 then print the average
elif 50.0 > grade1 <= 100.0 and 50.0> grade2 <= 100.0:
print ((grade1+grade2)/2)
除了其他答案中指出的错误逻辑之外,您可以使用max和min对某些情况进行一次逻辑检查。在
可以
^{pr2}$同样
^{3}$一旦这两个被证明是错误的,另一个意味着一个在极限的两边。在
类似地,为了测试可以使用的无效值
意味着至少有一个等级无效
意味着两个等级都是无效的。在
你的比较搞砸了。他们不会说出你的意思,很多人的评价总是错误的。不可能有一个等级为},这是你想在第一个“if”语句中说什么的形式。在
0.0 >= grade1 >= 50.0
,因为没有大于等于50的非正数。我建议你写下你的多次比较“漫长的路”,直到你明白你的意思,而不是使用Python的这个按键保存功能。a < b < c
在Python中的意思是a < b and b < c
而不是{最后,当在一个表达式中编写多个比较时,不要混淆比较的方向,这是不必要的混淆(首先对您来说)。在
一种更简洁的编写(计算部分)函数的方法:
这使得一个列表
passing_grades
只包含提供给正在传递的函数的等级。函数返回他们的平均值,注意不要除以0,以防没有分数通过。在虽然下面的功能可能有些过火,但我不得不提一下:上面的函数很容易概括为取任意分数的函数:
^{pr2}$你可以这样使用:
^{3}$我只是在猜测你的问题,因为你还没有具体说明,但在“函数2”的第二部分中,你的逻辑似乎很糟糕:
应该是:
^{pr2}$如果查看原始条件,则继续检查
0.0 >= gradeN
,这意味着只有当分数为负数时才为真。你的其他部分也有类似的问题。在相关问题 更多 >
编程相关推荐