python入门,不要用太复杂的方式

不知道为什么题发不出来,就用照片的形式,原题是法语的

img

以下是我写的

img


dict_year_member={}
for i in range(2007,2050):
    member=1.08**(i-2007)*100
    member=round(member)
    dict_year_member[i]=member
while True:
    number=input('enter number')
    if number=='1':
        year=int(input('输入年份'))
        while year<2007:
            year=int(input('输入年份'))
        print(f'{year} have {dict_year_member[year]} members')
    elif number=='2':
        year=int(input('输入年份'))
        if year<=2007:
            print(f'2007 have 100 members')
        else:
            for i in range(2007,year+1):
                print(f'{i} have {dict_year_member[i]}')
    elif number=='3':
        _sum=0
        year=int(input('输入年份'))
        for i in range(2007,year+1):
            _sum+=dict_year_member[i]
        print(f'2007 to {year},have {_sum} members total')
    elif number=='4':
        m=int(input('输入人数'))
        n=m
        k=0
        while m>100:
            m/=1.08
            k+=1
        print(f'{k+2007} will be {n} members')
    elif number=='Q':
        break

题目中4,115人在201九年获得,我键盘坏了,输入不了九的数字

每年增加百分之8,为什么你写的1.8?变成百分之80?而且你写的也有问题,像你这么写,number=100就完事了,为什么要写【100】变成列表呢?
1.你的for循环错误,for i in range(A,B);可以取到A,不能取到B,这个一定要记住,像你这么写n-2017,那么你输入2018,i是取不到1的。
2.你的年份公式错误,每年增长百分之A,那么n年之后的人数应该是:

N=number*(1+A)**n

而不是简单的直接用for循环乘一下,像你这么写,你的每个N都是相等的,也就没有啥意义。