Ваша функция будет выглядеть примерно так:
MIDYEAR_POPULATION = [(1971, 21962032), (1972, 22218463), (1973, 22491777), (1974, 22807969), (1975, 23143275), (1976, 23449808), (1977, 23725843), (1978, 23963203), (1979, 24201544), (1980, 24515667), (1981, 24819915), (1982, 25116942), (1983, 25366451), (1984, 25607053), (1985, 25842116), (1986, 26100278), (1987, 26446601), (1988, 26791747), (1989, 27276781), (1990, 27691138), (1991, 28037420), (1992, 28371264), (1993, 28684764), (1994, 29000663), (1995, 29302311), (1996, 29610218), (1997, 29905948), (1998, 30155173), (1999, 30401286), (2000, 30685730), (2001, 31020596), (2002, 31358418), (2003, 31641630), (2004, 31938004), (2005, 32242364), (2006, 32570505), (2007, 32887928), (2008, 33245773), (2009, 33628571), (2010, 34005274), (2011, 34342780), (2012, 34750545), (2013, 35152370), (2014, 35535348), (2015, 35832513), (2016, 36264604), (2017, 36708083), (2018, 37057765), (2019, 37589262)]
def average_percentage_increase(pop_stats):
all_differences = list()
for i, year in enumerate(pop_stats):
if i > 0:
difference_in_percentage = year[1] / pop_stats[i - 1][1]
all_differences.append(difference_in_percentage)
return sum(all_differences) / len(all_differences)
factor = average_percentage_increase(MIDYEAR_POPULATION)
percentage = (factor - 1) * 100
percentage_rounded = round(percentage, 2)
print(factor)
print(percentage)
print(percentage_rounded)
Где с вашими данными я получу следующие результаты:
factor: 1.0112606694880342
percentage: 1.126066948803417
percentage_rounded: 1.13
Надеюсь, это поможет, и для будущих вопросов, пожалуйста, покажите, что вы уже пробовали, и какой будет ожидаемый ответ, чтобы люди, которые пытаются вам помочь, могли подтвердить свой ответ.