簡體   English   中英

我正在嘗試使用 for 循環在字典中查找輸入值的平均值?

[英]I am trying to find an average of input values in dictionary using for loop?

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
if query_name in student_marks:
    for i in student_marks[query_name]:
        sum+=i
    x=float(sum/len(scores))
    print("%.2f"%x)

我已經這樣做了,但想以更少的行數執行

您可以將求和循環替換為:

if query_name in student_marks:
  total = sum(student_marks[query_name])
  mean = total / len(student_marks[query_name])
  print("%.2f" % mean)

您還可以預先計算每個學生的平均值並將其存儲在該字典中以開始:

for _ in range(n):
  name, *line = input().split()
  record = {'scores': list(map(float, line))}
  record['total'] = sum(record['scores'])
  record['n'] = len(record['scores'])
  student_marks[name] = record

或者:

for _ in range(n):
  name, *line = input().split()
  scores = list(map(float, line))
  student_marks[name] = {
    'scores': scores,
    'total': sum(scores),
    'n': len(scores)
  }

那么您的查詢將如下所示:

def query(name):
  if name in student_marks:
   record = student_marks[name]
   return record['total'] / record['n']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM