自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pyb的博客

一个编程之路上的初学者

  • 博客(30)
  • 收藏
  • 关注

原创 编程珠玑学习笔记(第一章)

本章主要讲述了磁盘排序算法和针对特殊数据我们可以作出的特殊算法.习题2:主要思路就是将整数进行映射,a[i<<5] <->1<<(i&31)。这样就实现了将一个整数数组当作位向量来使用了.习题4:def fast_generate(N,k): random_list = [] x = [i for i in range(0,N)] for i in range(0,k):

2016-03-31 23:55:21 392

原创 SICP学习笔记:用高阶函数作抽象(1)

我们可以通过定义一个通用的sum来进行求和.传入过程作为参数练习1.29,利用辛普森法则进行积分求和,需要注意的一点是闭包的性质,在integral里面的参数都是可以直接用在里面的闭包里面的.(define (sum f a next b) ( if(> a b) 0 (+ (f a) (sum f (next a) next b)) ))

2016-03-31 15:00:53 575

原创 python 元类的使用(orm框架搭建)

元类是python面向对象编程里面很难理解的一个东西,所谓元类的就是类的类,它用来创建类,在python里面,类也是一个对象!!!.元类的作用就是动态的创建类.在python里面type就是元类,我们所有的class定义类的语句都会被python解释为使用用type来创建一个类.废话少说,首先看一下怎么用元类来解决一个动态创建类的需求,要求我们对于某一类型的类的满足某个条件的属性名字都变成大写!比如

2016-03-28 22:46:49 2860 1

原创 SICP学习笔记:最大公约数和素数检测

[0]最大公约数:求最大公约数的一个简单办法是欧几里德算法.对于a,b,GCD(a,b)= GCD(b,r)。b是a/b的余数证明如下:a = kb + r(1),设 m = GCD(a,b),a = m*a1,b = m*b1.所以 (1)可以变形: a1 = kb1 + r/m;显然r/m必然是一个整数,记为r1。得到a1 = kb1 + r1(2)。现在证明m也是b和r的最大公约数,只须证b1

2016-03-27 17:12:41 502

原创 Python:用generator构造树和遍历(探究yield和yield from)

[0]:以前初步的了解了yield,今天在稍微深入的学习一下.[1]首先含有yield关键字的函数就是协程,也是generator,注意,这个generator不再是函数的调用方式了,具体看一个例子class Node(object): def __init__(self,value): self._left = [] self._right = []

2016-03-26 23:47:19 3063

原创 Python学习:异步IO:协程和asyncio

所谓协程就是在一个线程中切换子进程,相比多线程有如下好处:最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。python的协程通过gene

2016-03-26 14:51:57 16172 1

原创 Python学习:Flask框架和jinja2模板

上一次使用了WSGI提供的接口构建了一个简单的web应用,但是WSGI提供的接口相对于web应用的逻辑来说还是太低级了,如果要处理不同的url那么wsgi里面的处理就会非常麻烦.所以python提供了很多的web框架,我们这需要用装饰器把自己的函数和不同的url关联起来就可以了.from flask import Flaskfrom flask import requestapp = Flask

2016-03-25 12:31:26 3029

原创 SICP学习笔记:求幂,用对数的算法复杂度解决fib数列

练习1.16,用来求一个数的幂,线形迭代的过程.讨论了正数和负数的情况(define (do-expt b n) (cond ((> n 0) (fast-expt b b n)) ((= n 0) 1) (else (/ 1 (fast-expt b b (- 0 n))))

2016-03-24 22:52:10 503

原创 python学习:最简单的web应用(WSGI接口)

web应用本质上来说就是:浏览器发送一个HTTP请求;服务器收到请求,生成一个HTML文档;服务器把HTML文档作为HTTP响应的Body发送给浏览器;浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。[0]我们要生成一个动态的web应用.如果由自己来写底层代码就太麻烦了.所以python提供了一个统一的接口,让我m只需要处理浏览器的请求,而不用去管各种协议.这个接口就是WGSI.

2016-03-24 20:26:33 2777

原创 Python导入mysql

要在python中使用mysql首先要安装支持python的mysql驱动,所以用pip下载处理一点问题,于是解决方案如下:解决办法:1、从官方下载最新的源码包下载地址:https://pypi.python.org/pypi/mysql-connector-python-rf/2.1.32、从cmd进入解压好的安装包目录中3、使用python setup.py build4、使用python se

2016-03-24 18:18:51 4279 1

原创 Python学习:用POP3接受邮件

下面的例子用163邮箱进行测试,因为qq邮箱好像要SSL加密?登陆起来麻烦一些。pop3接受邮件有两个步骤,首先用poplib模块把原始的文件从邮箱下载到本地.然后对邮件文本进行解析。[0]:# 输入邮件地址, 口令和POP3服务器地址:email = input('Email: ')password = input('Password: ')pop3_server = input('POP3

2016-03-24 14:13:52 2495

原创 Qt信号槽函数用lambada表达式作为槽函数的陷阱

lambada表达式作为槽函数可能出错的地方是,如果不是通过参数绑定的变量,而是通过[&]来捕获的变量,当信号调用时绑定可能不是connect时候的那个变量了,它会被修改!!但是如果是[=]或者(args)形式传入的变量就不会有问题for(size_t i = 0;i<=1;++i) { Newspaper* that = nullptr; if(i == 0)

2016-03-21 22:47:03 1091

原创 SICP学习笔记(4)

[1]树型递归就是典型的fib数列,然后转换为迭代的尾递归形式.可以大大增加效率.练习1.11,f(n) = f(n-1)+2f(n-2)+3(n-3) (n>=3)f(n) = n (n<3),用两种方式求f(n); (define (f n) ( ; if (< n 3) ; n ; ( + ( f (- n 1)) (* 2 (f (- n 2)))

2016-03-19 15:57:34 426

原创 SICP笔记(3)

[0]本部分内容主要讲述了shceme中计算过程递归和递归过程的概念,所谓计算过程递归是在计算的时候需要解释器保存额外的信息,而递归过程则是代表这个过程的定义是递归的.递归的过程不一定导致计算过程的递归,一个重要原因是很多解释器可以用尾递归来优化它.练习1.10:(define (A x y) (cond ((= y 0) 0) ((= x 0)(

2016-03-18 12:20:11 328

原创 SICP学习笔记(2)

牛顿法求根;The first program(define (abs x) ( if(< x 0) (- x) x ))(define (square x) (* x x) )(define (average x y) (/ (+ x y) 2))(define (improve guess x)(avera

2016-03-17 21:55:12 303

原创 SICP学习笔记(1):

[0]:学会了基本使用scheme命令行和基本表达式:(1)第一个代码文本里面,用前缀表达式来定义计算.;The first program(define x (+ (* 3 (+(* 2 4) (+ 3 5))) (+(- 10 7) 6)))(define A (* x

2016-03-16 23:02:44 413

原创 Python学习之常用内置模块:urlib

利用urlib提供的request模块可以访问相应的url并且获取数据(以bytes的形式).下面的代码是通过urlib访问雅虎天气网站然后获取相应的数据.#!/usr/bin/env python3# -*- coding: utf-8 -*-from urllib import request, parseimport re,jsonfrom xml.parsers.expat impor

2016-03-16 19:03:23 1824

原创 处理编码解码错误:

今天打开一个unicode格式的txt文件结果出现’gbk’ cannot decode characterxxxxxx,明明已经指定了utf-8但是没用,折腾了2小时最后发现win32控制台自动设置为gbk格式,必须用IDLE来执行py文件………..

2016-03-16 17:59:45 453

原创 计算圆周率到指定精度.

首先是知道圆周率的一个公式:利用这个公式进行迭代计算,4行代码就可以计算到圆周率后15位:π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...下面是需要计算到指定的精度,同样是利用上面的公式进行计算就好了….只是需要用一个list来表示一个小数,然后实现高精度小数的加乘除……,当某一项在规定精度内都是0的时候终止循环.import mathdef compute_pi

2016-03-15 15:22:17 3346 1

原创 制作一个注册网页(1)

下面用html+php制作一个最简单的注册网页:<!DOCTYPE HTML><html> <head> <title>hello, word</title> </head> <body bgcolor = #ffcc00> <div style = 'background-color:rgb(100,0,255);text-align:ce

2016-03-14 13:48:36 832

原创 Python学习:继承一个内置类并用单元测试测试

从dict继承一个类型并且让我们可以用属性去访问并修改.注意,为了能够实现所有的dict功能,初始化参数一定要用*args,**kw。注意:下面的代码由问题!class MyDict(dict): def __init__(self,*args,**kw): super().__init__(*args,**kw) def __getattr__(self,key):

2016-03-09 22:59:39 672

原创 背包问题的三个解决方案

0-1背包的穷举解法.对于8个物品的调用了函数85次.def MaxVal(contains,i,w,v):#four arg means the aviable space of container,the ith item to choose,and w and v means input of weights and values global callnums callnum

2016-03-07 20:39:59 862

原创 A*求15码

import osimport timefrom functools import reduceN = 16T = [4,7,8,3,6,13,15,2,1,11,5,12,0,14,10,9]#T = [1,2,3,4,5,0,7,8,9,6,10,12,13,14,11,15]#obj = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0]#obj =

2016-03-04 23:05:26 454

原创 BFS求解N数码(python)

import os import time N = 9 T = [1,2,3,4,5,6,7,8,0]#the original state obj = [2,4,3,1,6,0,7,5,8]#the final state factory = [1, 1, 2, 6, 24, 120,720, 5040,40320] def formed_print(L): n = 0;

2016-03-04 19:53:31 841

原创 Python学习基础(9):函数式编程

[0]:高阶函数,可以接受其他函数作为参数:比如 def high_func(x,f): return f(x)*f(x+1)high_func(-10,abs)[1]map和reduce的练习,map用来将一个函数作用到一个序列的每一个element上面并且返回一个新的iterator.我们可以用list()将这个iterator变成list.reduce则可以将一个函数

2016-03-03 16:18:55 301

原创 Python练习:多人猜数字问题

[0]:网上经典问题:一个教授在三个学生背上写了三个正整数,每个学生只能看见其他两个人的,并且告诉他们数字之和是144,然后从第一个人开始循环提问:你知道三个人的数字分别是多少吗?到第五次提问(即循环到第二人)时他说我知道答案了.从你的角度,请问可能的答案是多少?[1]:这个问题看似简单,其实比较复杂,我看了知乎上大神的回答之后按照自己的思路理解了一遍,给出详细的解答:(0):首先考虑第一次提问,这

2016-03-03 14:16:21 1902

原创 Python练习(4):牛顿拉复生算法求解根

用这种算法求解的答案收敛速度远远快于二分法!,而且不需要顾及到x小于1的情况.def NRSquareroot(x,ellipson): assert(x>0) assert(ellipson > 0) ellipson = min(x/1e3,ellipson)#ensure the epplison is appropriate guess = x/2 c

2016-03-02 19:37:44 561

原创 Python练习(3):浮点数的比较和二分法

[0]浮点数在python里面是二进制的形式存储的,比如0.1,就不能找到一个有限的二进制形式来表示它,所以python会对0.1的二进制表示进行截断,造成误差,注意,误差是可以累积的![1]python中的print会对浮点数在10多位后进行截断,0.999999999999999999999。。。999会被输出1.这点在调试时候会造成疑惑.[2]对浮点数进行比较的时候需要采取误差比较的办法练习:

2016-03-02 15:07:28 4402 1

原创 Python练习(2):递归解决汉诺塔问题

有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。求H[n],当然,这个问题还有非递归实现,有时间再去探究.def move(n, a, b, c): if(n==1): print(a,' --> ',

2016-03-01 20:45:34 1471

原创 Python练习(1):递归和动态规划的简单应用

首先考虑一个问题,假如我们在某个编译器上写出了这样的式子:(i++)(i++)(i++),假设i = 5,那么会有多少可能的结果?显然,编译器对这种行为是未定义的,我们不知道i自增和乘法指令的执行顺序,可能的结果有5*5*5, 5*5*6, 5*5*7, 5*6*6, 5*6*7一共5种.那么问题来了,假如n个i++相乘,可能会有多少种情况???对这个问题有多种解法,首先可以将其看作一个类似于排列组

2016-03-01 10:52:59 2823

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除