Collections.namedtuple() Python Alıştırma Sorusu

Nov 28 2022
collections.namedtuple() Temel olarak, adlandırılmış gruplar oluşturması kolay, hafif nesne türleridir.

collections.namedtuple()
Temel olarak, nametuples oluşturması kolay, hafif nesne türleridir.
Basit görevler için demetleri uygun kaplara dönüştürürler.

Namedtuples ile, bir demetin üyelerine erişmek için tamsayı indeksleri kullanmak zorunda değilsiniz.

Örnek :

kod 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'de öğrencilerin kimlikleri, Notları, sınıfları ve adlarının bir listesini içeren bir elektronik tablo vardır.
Göreviniz Dr. Wesley'in öğrencilerin ortalama notlarını hesaplamasına yardımcı olmaktır.

Not:

1. Sütunlar herhangi bir sırada olabilir. Kimlikler, işaretler, sınıf ve ad elektronik tabloya herhangi bir sırayla yazılabilir.

2. Sütun isimleri ID, MARKS, CLASS ve NAME şeklindedir. (Bu adların yazımı ve büyük/küçük harf tipi değişmeyecektir.)

Giriş Biçimi :

İlk satır, toplam öğrenci sayısı olan bir N tamsayısını içerir.
İkinci satır, herhangi bir sırada sütunların adlarını içerir.

Sonraki N satır, ilgili sütun adları altında işaretleri, kimlikleri, adı ve sınıfı içerir.

kısıtlamalar:

  • 0 <= N <= 100

2 ondalık basamağa düzeltilmiş listenin ortalama işaretlerini yazdırın.

Örnek Giriş :

TEST 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

TEST 01

78.00

81.00

TEST 01

Ortalama = (97 + 50 + 91 + 72 + 80)/5

Bu zorluğu 4 satır veya daha az kodla çözebilir misiniz?

NOT: Doğru olan ancak 4 satırdan fazla olan çözümlere ceza uygulanmaz.

Çözüm

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)