एक फ़ंक्शन लिखें is_better_than_avg(students, pos), जो दो तर्क लेता है students सभी छात्रों के शब्दकोशों की सूची है स्थिति एक पूर्णांक है - उस सूची में छात्र की स्थिति जिसे हम जांचना चाहते हैं। चेकिंग इस तरह काम करता है - स्कूल में सभी ग्रेडों का औसत गिनें (ऊपरी सेल) मान की तुलना छात्र के औसत से करें। यदि छात्र का औसत स्कूल औसत से अधिक है, तो True लौटाएं, अन्यथा, False लौटाएं।

मुझे नहीं पता कि प्रोग्राम का दूसरा निष्पादन False के बजाय True क्यों कहता है।

# Function for testing purposes
def test(got, expected):
  if got == expected:
    prefix = ' OK '
  else:
    prefix = "  Something's wrong  "
  print(prefix,' got:',repr(got),'expected:',repr(expected))
list_of_students = []
list_of_students.append(kosma) # appending the student k1sma

def is_passed(student_dict):
  return avg(student_dict)>=3.0
  
def school_avg(students):
  all = 0
  licznik = 0
  for a in students:
    all = all + avg(a)  #dodaje średnią sprawdzanego studenta do 'all'
    licznik = licznik + 1 #dodaje 1 do liczniku

  return all / licznik

list_of_students.append({
    "username": "mikub",
    "age":24,
    "is_blocked": False,
    "grades": [5,5,5,5]
})

list_of_students.append({
    "username": "ewa",
    "age":24,
    "is_blocked": False,
    "grades": [1,3,3,2,1,1,1,1,1,1]
})

list_of_students.append({
    "username": "robert",
    "age":24,
    "is_blocked": False,
    "grades": [5,5,5,5,5,1]
})
list_of_students.append({
    "username": "radek",
    "age":24,
    "is_blocked": False,
    "grades": [1,3,3,2,5,5,5]
})

list_of_students.append({
    "username": "kasia",
    "age":24,
    "is_blocked": False,
    "grades": [5,5,5,1]
})

list_of_students.append({
    "username": "kasia",
    "age":24,
    "is_blocked": False,
    "grades": [5,1,1,1,1,5,1]
})
list_of_students.append({
    "username": "jola",
    "age":24,
    "is_blocked": False,
    "grades": [5,4,5,5,5,4]
})

#this is the important part

def is_better_than_avg(students,pos):
  for pos in students:
    if avg(pos) > school_avg(students):
      return True
    elif avg(pos) < school_avg(students):
      return False

test(is_better_than_avg(list_of_students,0),True) #returns True as it should
test(is_better_than_avg(list_of_students,6),False) #idk why this returns True as well
0
GrainsGames 7 नवम्बर 2021, 11:46
kosma और avg परिभाषित नहीं हैं, कृपया इसे ठीक करें
 – 
azro
7 नवम्बर 2021, 11:50
आप एक के लिए ग्रेड का औसत और सभी ग्रेड का औसत एक साथ परिकलित करते हैं? या प्रत्येक औसत का औसत?
 – 
azro
7 नवम्बर 2021, 11:56
स्कूल का औसत 3.5 है और चयनित छात्र का औसत 5 . है
 – 
fmansour
7 नवम्बर 2021, 11:56
jola का औसत 4.6 है, जो स्कूल के औसत 3.5 . से अधिक है
 – 
azro
7 नवम्बर 2021, 12:13

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि आपको is_better_than_avg फ़ंक्शन को इस तरह बदलना चाहिए:

def is_better_than_avg(students,pos):
    student = students[pos]
    if avg(student) > school_avg(students):
        return True
    elif avg(student) < school_avg(students):
        return False
1
fmansour 7 नवम्बर 2021, 11:59
हाँ बहुत ध्न्यवाद! मैं समझता हूं कि मुझे शब्दकोश भी शामिल करना था क्योंकि pos केवल एक संख्या है।
 – 
GrainsGames
8 नवम्बर 2021, 18:23