2014-10-29 2 views
0

Я делаю программу подсчета очков с помощью python 3, которая для каждого из 18 отверстий хранит: номер отверстия, номинал, уровень сложности и целевую оценку.Как хранить эти данные?

Оценка цели рассчитывается исходя из степени, сложности и гандикапа (которые могут быть изменены пользователем).

Что бы вы посоветовали стать лучшим методом для хранения этих данных, чтобы его можно было отобразить в виде таблицы, и целевой показатель легко изменился, если пользователь отредактировал значение гандикапа?

Я не знаю, с чего начать, поскольку у меня очень мало опыта.

Спасибо.

+1

Или 'collections.namedtuple'! –

+1

Как долго вы можете хранить его? Если вам нужно хранить данные только до тех пор, пока пользователь не выйдет из словаря, вероятно, будет лучше. Если вам нужно некоторое время поддерживать его, база данных будет лучшим вариантом. – IanAuld

+0

На самом деле, если целевой счет чисто рассчитан, вы, вероятно, должны просто построить класс для оценки. –

ответ

0

Постройте класс.

class HoleScore(object): 
    def __init__(self, hole_number, par, difficulty, handicap=0): 
     self.hole_number = hole_number 
     self.par = par 
     self.difficulty = difficulty 
     self.handicap = handicap 
    @property 
    def target_score(self): 
     return do_some_calculation_of_attributes(self.par, self.difficulty, self.handicap) 

Затем вы можете добавить несколько методов Dunder, чтобы способствовать этому, или (лучше) разработать функцию для создания таблицы из связки HoleScore объектов. Что-то вроде:

# inside class HoleScore 
    @staticmethod 
    def make_table(list_of_holes): 
     """list_of_holes is a list of HoleScore objects""" 
     print("Some | headers | here") 
     for hole in list_of_holes: 
      fields = [hole.hole_number, 
         hole.par, 
         hole.handicap, 
         hole.target_score] 
      print("|".join(fields)) # use some string formatting here? 
+0

Так я должен был бы сделать 18 классов - 1 для каждой дыры? – Oceanescence

+0

@Oceanescence Нет только 18 объектов, например. 'holes = [HoleScore (1, 4, 5), HoleScore (2, 6, 8)]' и т. д. –

Смежные вопросы