python练习题(难度高)

# 一个猪圈里有2只刚满2岁的猪,
# 每只猪只能活4年,每只猪第四年还可以生一次崽
# 2岁后每2只猪每年可以生4头小猪(假设小猪性别比例总是1:1),
# 问n年后猪圈里有几只猪?
答案是小编自己写的 ,对不对我也不知道,有大神看到的话可以帮忙指点一下感谢,
class pig:
    def __init__(self, dict, n):
        self.dict = dict
        self.n = n

    def sort(self):
        for j in range(self.n):
            index = 0
            for i in range(len(self.dict)):
                # 只接受2-4岁的小猪,
                if 2 <= self.dict[i][0] <= 4:
                    index += self.dict[i][1] * 2
            # 将今年出生的小猪添加进去
            self.dict.append([0, index])
            # 如果小猪大于4岁,将其数组中的值销毁,这个数组销毁困扰了小编很久,最后只能记入下表值,然后将其反转,从后面向前删除数组中的值
            sums = []
            for i in range(len(self.dict)):
                # 一年过去了,小猪生完崽,给小猪加一岁
                self.dict[i][0] += 1
                if self.dict[i][0] > 4:
                    sums.append(i)
            sums = sums[::-1]
            # 删除
            for i in sums:
                del self.dict[i]
                
            # 显示当前猪圈猪的数量
            for i in range(len(self.dict)):
                print("岁数%d,数量%d" % (self.dict[i][0], self.dict[i][1]))
            print("第%d年猪的数量:%s" % (j + 1, sum(map(lambda x: x[1], self.dict))))
            print()

p = pig([[2, 2]], 10)
p.sort()
input()

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值