Collections.namedtuple() คำถามฝึกหัด Python

Nov 28 2022
collections.namedtuple() โดยทั่วไปแล้ว Namedtuples นั้นสร้างได้ง่ายและเป็นประเภทวัตถุที่มีน้ำหนักเบา

collections.namedtuple()
โดยทั่วไปแล้ว Namedtuples นั้นสร้างได้ง่ายและเป็นประเภทวัตถุที่มีน้ำหนักเบา
พวกเขาเปลี่ยนทูเพิลเป็นคอนเทนเนอร์ที่สะดวกสำหรับงานง่ายๆ

ด้วยชื่อสิ่งอันดับ คุณไม่จำเป็นต้องใช้ดัชนีจำนวนเต็มเพื่อเข้าถึงสมาชิกของทูเพิล

ตัวอย่าง :

รหัส 01

>>> from collections import namedtuple
>>> Point = namedtuple('Point','x,y')
>>> pt1 = Point(1,2)
>>> pt2 = Point(3,4)
>>> dot_product = ( pt1.x * pt2.x ) +( pt1.y * pt2.y )
>>> print dot_product
11

>>> from collections import namedtuple
>>> Car = namedtuple('Car','Price Mileage Colour Class')
>>> xyz = Car(Price = 100000, Mileage = 30, Colour = 'Cyan', Class = 'Y')
>>> print xyz
Car(Price=100000, Mileage=30, Colour='Cyan', Class='Y')
>>> print xyz.Class
Y

ดร. จอห์น เวสลีย์มีสเปรดชีตที่มีรายการรหัสประจำตัว คะแนน ชั้นเรียน และชื่อของนักเรียน
งานของคุณคือช่วย Dr. Wesley คำนวณคะแนนเฉลี่ยของนักเรียน

บันทึก:

1. คอลัมน์สามารถอยู่ในลำดับใดก็ได้ รหัส เครื่องหมาย ชั้น และชื่อสามารถเขียนตามลำดับใดก็ได้ในสเปรดชีต

2. ชื่อคอลัมน์คือ ID, MARKS, CLASS และ NAME (การสะกดและประเภทตัวพิมพ์ของชื่อเหล่านี้จะไม่เปลี่ยนแปลง)

รูปแบบการป้อนข้อมูล :

บรรทัดแรกประกอบด้วยจำนวนเต็ม N ซึ่งเป็นจำนวนนักเรียนทั้งหมด
บรรทัดที่สองประกอบด้วยชื่อคอลัมน์ในลำดับใดก็ได้

N บรรทัดถัดไปประกอบด้วยเครื่องหมาย ID ชื่อและคลาส ใต้ชื่อคอลัมน์ตามลำดับ

ข้อจำกัด :

  • 0 <= น <= 100

พิมพ์คะแนนเฉลี่ยของรายการแก้ไขเป็นทศนิยม 2 ตำแหน่ง

ตัวอย่างอินพุต:

การทดสอบ 01

5
ID         MARKS      NAME       CLASS     
1          97         Raymond    7         
2          50         Steven     4         
3          91         Adrian     9         
4          72         Stewart    5         
5          80         Peter      6

5
MARKS      CLASS      NAME       ID        
92         2          Calum      1         
82         5          Scott      2         
94         2          Jason      3         
55         8          Glenn      4         
82         2          Fergus     5

การทดสอบ 01

78.00

81.00

การทดสอบ 01

ค่าเฉลี่ย = (97 + 50 + 91 + 72 + 80)/5

คุณสามารถแก้ปัญหานี้ในโค้ด 4 บรรทัดหรือน้อยกว่านั้นได้ไหม

หมายเหตุ: ไม่มีบทลงโทษสำหรับคำตอบที่ถูกต้อง แต่มีมากกว่า 4 บรรทัด

สารละลาย

import collections

n = int(input())
scol = ','.join(input().split())
Student = collections.namedtuple('Student',scol)

sum = 0
for i in range(n):
    row = input().split()
    student = Student(*row)
    sum += int(student.MARKS)

print(sum/n)