bugfix> python > 投稿

def grade(*score):
  for i in range(0, score):
    if score >= 90:
      return "A"
    elif score >=80:
      return "B"
    elif score >=70:
      return "C"
    elif score >=60:
      return "D"
    else:
      return "F"
print(grade(87, 92, 100, 54, 72, 84, 81, 74))

引数をループして、各ループで正しいグレードを返すことができるようにしたい

回答 3 件
  • forループを使用して、各グレードをリストに追加し、リストを返すことができます。

    def grade(*score):
      grades = []
      for i in score:
        if i >= 90:
          grades.append("A")
        elif i >=80:
          grades.append("B")
        elif i >=70:
          grades.append("C")
        elif i >=60:
          grades.append("D")
        else:
          grades.append("F")
      return grades
    print(grade(87, 92, 100, 54, 72, 84, 81, 74))
    
    

  • for student in grade_tuple:
      print(grade(student))
    
    

    ただ1つのスコアを期待するようにgrade()を書き直すと仮定します...

  • def grade(score):
      lettered = []
      for i in score:
        if i >= 90:
          lettered.append("a")
        elif i >=80:
          lettered.append("b")
        elif i >=70:
          lettered.append("c")
        elif i >=60:
          lettered.append("d")
        else:
          lettered.append("f")
      return tuple(lettered)
    print(grade((100,30,70)))
    
    
    ("a","f","c")
    
    

    またはそれを行うためのこの興味深い方法:

    def grade(score):
      scores = {range(90,101):"a", range(80,90):"b", range(70,80):"c", range(60,70):"d", range(1,60):"f"}
      return tuple([scores[gradeRange] for i in score for gradeRange in scores.keys() if i in gradeRange])
    print(grade((100,30,70)))
    
    
    ("a","f","c")
    
    

あなたの答え