【问题标题】:Finding Percentages marks寻找百分比标记
【发布时间】:2019-09-02 13:39:53
【问题描述】:

我们有学生的记录。每条记录都包含学生的姓名,以及他们在数学、物理和化学方面的百分比分数。标记可以是浮动值。用户输入一些整数,后跟学生的姓名和分数。我们需要将记录保存在字典数据类型中。然后用户输入学生的姓名。输出该学生获得的平均百分比分数,精确到小数点后两位。

我已尝试以下方法,但某些 n 值出现错误

if __name__ == '__main__':
    n = int(input())
    student_marks = {}
    for _ in range(n):
        name, *line = input().split()
        scores = list(map(float, line))
        student_marks[name] = scores
    query_name = input()
    query_score=student_marks[query_name]
    a=(sum(query_score)/n)
    print("{0:.2f}".format(a))

【问题讨论】:

  • `(反引号)是有意的吗? @Abhishek
  • 哎呀!!我认为它没有..删除它但错误仍然存​​在
  • 什么错误?
  • n 为 2 时输出错误..
  • 你能举一个示例输入和预期输出的例子吗?

标签: python dictionary percentage


【解决方案1】:
if __name__ == '__main__':
    n = int(input())
    marks = {}
    avg = 0
    scores_sum = 0
    for i in range(n):
        name, *line = input().split()
        scores = list(map(float, line))
        marks[name] = scores
   
    query_name = input()
    for i in marks[query_name]:
        scores_sum += i
    
    avg = scores_sum/len(marks[query_name])
    print("{:.2f}".format(avg))
    
        
           
 I was able to execute the above code and it is working fine now.

【讨论】:

    【解决方案2】:

    试试看:

    if __name__ == '__main__':
        n = int(input())
        student_marks = {}
        for _ in range(n):
            name, *line = input().split()
            scores = list(map(float, line))
            student_marks[name] = scores
        query_name = input()
        query_score=student_marks[query_name]
        a=(sum(query_score)/len(query_score))
        print("{0:.2f}".format(a))
    

    【讨论】:

      【解决方案3】:

      在 Python-3 中

      if __name__ == '__main__':
          n = int(input())
          student_marks = {}
          for _ in range(n):
              name, *line = input().split()
              scores = list(map(float, line))
              student_marks[name] = scores
          query_name = input()
      
      print("%.2f" %(sum(student_marks[query_name])/len(student_marks[query_name])))
      

      输入:

      3
      Krishna 67 68 69
      Arjun 70 98 63
      Malika 52 56 60
      Malika
      

      输出:

      56.00
      

      【讨论】:

        【解决方案4】:
        if __name__ == '__main__':
        n = int(input())
        student_marks = {}
        for _ in range(n):
            name, *line = input().split()
            scores = list(map(float, line))
            student_marks[name] = scores
        query_name = input()
        
        
        print("{0:.2f}".format(round(sum(student_marks[query_name]) / len(student_marks[query_name]), 2)))
        

        【讨论】:

          【解决方案5】:
          if __name__ == '__main__':
          n = int(input())
          student_names = {}
          stud_name1 =[]
          stud_name =[]
          final_marks=[]
          
          for studentInfo in range(n):
              stud_name = list(input().split())
              
              stud_name1.append(stud_name)
          final_name = input()
                
          for m in stud_name1:
              student_names.update({m[0]:{'maths':float(m[1]),'physics':float(m[2]),'chemistry':float(m[3])}})
          for n in student_names:
              if final_name == n:
                  for subject_name in student_names.get(n):
                      final_marks.append(student_names.get(n).get(subject_name))
          
          average = (final_marks[0]+final_marks[1]+final_marks[2])/3
          formatted_float = "{:.2f}".format(average)
          print(formatted_float)
          

          【讨论】:

            【解决方案6】:

            试试这个:

            if __name__ == '__main__':
            n = int(input())
            student_marks = {}
                for _ in range(n):
                name, *line = input().split()
                scores = list(map(float, line))
                student_marks[name] = scores
            query_name = input()
            average = sum(student_marks[name])/len(student_marks[name])
            average = format(average,'.2f')
            print(average)
            

            【讨论】:

              【解决方案7】:
              n = int(input())
              student_marks = {}
              for _ in range(n):
                  name, *line = input().split()
                  scores = list(map(float, line))
                  student_marks[name] = scores
              query_name = input()
              query_score = student_marks[query_name]
              a = (sum(query_score)/len(scores))
              print("{0:.2f}".format(a))
              

              【讨论】:

              • 您能解释一下您的代码吗?它与现有答案有何不同?在什么情况下读者可能更喜欢你的方法?
              【解决方案8】:

              我解决了这个挑战代码:

              if __name__ == '__main__':
                  n = int(input())
                  student_marks = {}
                  for _ in range(n):
                      name, *line = input().split()
                      scores = list(map(float, line))
                      student_marks[name] = scores
                  query_name = input()
                  sum=0
                  avg=0
                  for key, value in student_marks.items():
                    if (key==query_name):
                      for i in value:
                        sum=sum+i
                      avg=sum/len(value)
                  print(format(avg,'.2f'))
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2021-09-07
                • 2016-01-17
                • 1970-01-01
                • 2020-04-15
                • 2022-11-05
                • 1970-01-01
                • 1970-01-01
                • 2021-11-22
                相关资源
                最近更新 更多