简单人口问题(指数增长)

import numpy as np
import matplotlib.pyplot as plt
from prettytable import PrettyTable

P0=100      #初始人口数目为P0
C=0.02      #人口自然增长率为2%/年
maxt=20    #预测的截止年份,计算是从第0年开始的

def forecast(t, p):
    '''
    t:用于存放年份的数组
    p:用于存放人口的数组
    '''
    for i in range(0,maxt+1):
        t.append(i)
        y=P0*(1+C)**t[i]#经推导的人口关于年份的函数表达式
        p.append(y)

def drawPopulationMap(t, p):
    '''
    t:用于存放年份的数组
    p:用于存放人口的数组
    '''
    plt.xlim(0,maxt+10), plt.ylim(P0-5,2*P0) #x轴、y轴的表示范围
    plt.plot(t,p)   #绘制图形
    plt.xlabel('time'),plt.ylabel('population')    #设置x、y轴的标签
    plt.title('simple population problem')      #设置图表标题
    plt.show()  #展示图表

def printTable(t, p):
    x= PrettyTable(['年份', '人口'])
    for i in range(len(t)):
        x.add_row([t[i],p[i]])
    print(x)

def main():  
    t=[]
    p=[]
    forecast(t, p)  #预测人口
    drawPopulationMap(t , p)    #绘制图形
    printTable(t,p)     #画表格
    
if __name__ =='__main__':   #提供调用函数的入口
    main()  

本程序在VS2017下运行通过

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/80552094