斐波那契及选择排序

1.斐波那契

class Fibonacci(object):
    """斐波那契数列迭代器"""

    def __init__(self, n):
        """
        :param n:int 指 生成数列的个数
        """
        self.n = n
        # 保存当前生成到的数据列的第几个数据,生成器中性质,记录位置,下一个位置的数据
        self.current = 0
        # 两个初始值
        self.a = 0
        self.b = 1

    def __next__(self):
        """当使用next()函数调用时,就会获取下一个数"""
        if self.current < self.n:
            self.a, self.b = self.b, self.a + self.b
            self.current += 1
            return self.a
        else:
            raise StopIteration

    def __iter__(self):
        """迭代器的__iter__ 返回自身即可"""
        return self

2.选择排序

def selectedSort(myList):
    #获取list的长度
    length = len(myList)
    #一共进行多少轮比较
    for i in range(0,length-1):
        #默认设置最小值得index为当前值
        smallest = i
        #用当先最小index的值分别与后面的值进行比较,以便获取最小index
        for j in range(i+1,length):
            #如果找到比当前值小的index,则进行两值交换
            if myList[j]['num']>myList[smallest]['num']:
                myList[j],myList[smallest] = myList[smallest],myList[j]

3.生成斐波那契序列并排序

def fib(request):
    if request.method == 'POST':
        mes = {}
        num = request.POST.get('num')
        if num:
            models.Fib.objects.all().delete()
            f = Fibonacci(int(num))
            for i in f:
                models.Fib.objects.create(number = i)
        nums = models.Fib.objects.all()
        alist = []
        for i in nums:
            dict = {}
            dict['id'] = i.id
            dict['num'] = i.number
            alist.append(dict)
        selectedSort(alist)
        def func(key):
            return key['id']
        sorted(alist,key=func,reverse=True)
        mes['message'] = alist
        mes['code'] = 200
        return HttpResponse(json.dumps(mes))

4.ajax异步加载并拼接多选框删除

<script type="text/javascript">
    function fib() {
        var num = $('.fib').val()
            $.ajax({
            url:"/fib/",
            type: "post",
            dataType:"json",
            data:{'num':num},
            success:function (res) {
                if (res.code == '200'){
                    var fibs = res.message
                    console.log(fibs)
                    var content = '<table border="1"><tr>'+
                        '<td>id</td>'+
                        '<td>斐波那契数列</td>'+
                        '<td>选择</td>'+
                        '</tr>'
                    for (var i=0;i<fibs.length;i++){
                        var fib = fibs[i]
                        content += '<tr>' +
                                '<td>'+ fib.id +'</td>'+
                                '<td>'+ fib.num +'</td>'+
                                '<td><input type="checkbox" name="del" value="'+ fib.id +'"></td>'+
                            '</tr>'

                    }
                    content += '</table><br> <button type="submit">删除</button>'
                    $('#table').html(content)

                }
                else {
                    alert(res.message)
                }
            }

            })
    }
</script>

4.多选删除

def del1(request):
    if request.method == 'POST':
        num_list = request.POST.getlist('del')
        for i in num_list:
            models.Fib.objects.filter(id = i).delete()
        return redirect('/')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值