2017-02-13 4 views
1

Я кодируюсь около 1 и половин лет назад, но я до сих пор не понимаю, как сетки работают на Python.Заполнение сетки с несколькими переменными

Так что моя проблема в том, что я должен создать сетку для отображения модели популяции. Поэтому мне нужно заполнить мою сетку различными переменными, которые меняются для каждой строки, которую вы имеете в сетке:

Так как бы я получил это?

ответ

1

Вам действительно не нужна концепция сетки, чтобы выполнить то, что вы хотите. Вам просто нужен generator, чтобы размножать свою популяцию от одного поколения к другому. Затем вы можете использовать Python Format Specification Mini-Language для печати значений в таблице, соответствующей вашему примеру.

def propagate(num_generations, population_start = None): 
    if population_start is None: 
     population = [10, 10, 10, 30] 
    else: 
     population = population_start 
    for gen in range(num_generations): 
     yield population 
     population = [population[1]*2, population[0], population[1]] 
     population.append(sum(population)) 

def print_propagation(num_generations, population_start = None): 
    print('GENERATION\tJUVENILES\tADULTS\tSENILES\t\tTOTAL') 
    for gen, pops in enumerate(propagate(num_generations, population_start)): 
     print('{:^10}\t{:^8}\t{:^6}\t{:^7}\t\t{:^5}'.format(gen, *pops)) 

Вы можете использовать вышеупомянутые функции следующим образом:

>>> list(propagate(6)) 
[[10, 10, 10, 30], 
[20, 10, 10, 40], 
[20, 20, 10, 50], 
[40, 20, 20, 80], 
[40, 40, 20, 100], 
[80, 40, 40, 160]] 

>>> print_propagation(6) 
GENERATION  JUVENILES  ADULTS SENILES   TOTAL 
    0    10    10  10    30 
    1    20    10  10    40 
    2    20    20  10    50 
    3    40    20  20    80 
    4    40    40  20    100 
    5    80    40  40    160 
+0

Большое спасибо !! Просто чтобы я мог лучше понять, что происходит, не могли бы вы объяснить, что ... '{:^10} \ t {:^8} \ t {:^6} \ t {:^7} \ t \ t {:^5} - делает? –

+0

См. Документацию по мини-языку формата Python (ссылка выше). Каждый набор фигурных скобок ('{}' s) будет включать распакованные аргументы из вызова метода .format', а строки '^ 10' указывают, что каждое значение будет выровнено по центру в этом поле в строке. – Billy

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