Collections.namedtuple() Pertanyaan Latihan Python
collections.namedtuple()
Pada dasarnya, namedtuple mudah dibuat, tipe objek yang ringan.
Mereka mengubah tupel menjadi wadah yang nyaman untuk tugas-tugas sederhana.
Dengan namedtuple, Anda tidak harus menggunakan indeks bilangan bulat untuk mengakses anggota tuple.
Contoh :
Kode 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 John Wesley memiliki spreadsheet yang berisi daftar ID siswa, Marks, kelas dan nama.
Tugas Anda adalah membantu Dr. Wesley menghitung nilai rata-rata siswa.

Catatan:
1. Kolom bisa dalam urutan apapun. ID, tanda, kelas, dan nama dapat ditulis dalam urutan apa pun di spreadsheet.
2. Nama kolom adalah ID, TANDA, KELAS dan NAMA. (Jenis ejaan dan huruf besar-kecil dari nama-nama ini tidak akan berubah.)
Masukkan format :
Baris pertama berisi bilangan bulat N, jumlah siswa.
Baris kedua berisi nama kolom dalam urutan apa pun.
N baris berikutnya berisi tanda, ID, nama dan kelas, di bawah nama kolomnya masing-masing.
Batasan :
- 0 <= N <= 100
Cetak nilai rata-rata daftar yang dikoreksi hingga 2 tempat desimal.
Contoh Masukan :
KASUS UJIAN 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
KASUS UJIAN 01
78.00
81.00
KASUS UJIAN 01
Rata- rata = (97 + 50 + 91 + 72 + 80)/5
Bisakah Anda menyelesaikan tantangan ini dalam 4 baris kode atau kurang?
CATATAN: Tidak ada penalti untuk solusi yang benar tetapi memiliki lebih dari 4 baris.
Larutan
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)
