Collections.namedtuple() คำถามฝึกหัด Python
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)