
python从入门到精通
本专栏介绍了当前最火热的python编程语言,从最简单的python基础语法知识、到数据结构的学习、再到应用程序构建、项目实战等。将引导读者一步步打开python语言世界的大门。
wangbowj123
炼丹中。
展开
-
linux下python3调用c++的方法并传递参数
近日需要用python写一个接口来调用c++项目。在网上找了一些方法感觉较为紊乱,其实python调用c本身就是较为简单的,因为python就是用c写的呀!主要方法就是在python中调用ctypes包,使用相关api调用项目编译生成的.so文件(类似于动态链接库)。唯一需要注意的就是在c++文件里需要将调用的函数用extern "C"{ void c_change(int ii, ...原创 2019-12-09 19:09:36 · 1615 阅读 · 0 评论 -
numpy基本函数与操作——一篇就够了!
对numpy基本函数操作进行了整理,掌握这些便可以算是入了个门,基本全部敲一遍就掌握差不多了!开发环境为jupyter notebook 基本是一个输入一个输出 需要源码的可以去我的github下载import numpy as np# 读文件的操作 分隔符为逗号 类型是strworld_alcohol = np.genfromtxt('world_alcohol.txt', de原创 2018-01-30 21:58:31 · 1606 阅读 · 0 评论 -
python3爬虫初步——http请求头部的构造
利用python3写爬虫,因为python3已经没有了urllib2,仅有urllib,区别就在于urllib2相当于urllib.request,调用urllib2的方法时可以通过urllib.request调用。 爬取百度首页时,收集到消息之后要对信息进行解码,发现编码方式为gb2312,运用decode方法进行解码,得到首页源代码。 关于http请求头信息,推荐使用浏览器插件Switch原创 2018-01-21 15:06:43 · 19823 阅读 · 5 评论 -
2017年StackOverflow上最好的20个Python问题
1、Python的 .. (点号 点号) 是什么语法?答案地址:https://stackoverflow.com/questions/43487811/what-is-python-dot-dot-notation-syntax2、为什么在Python3中 x**4.0 比 x**4运行的快?答案地址:https://stackoverflow.com/questions/42355转载 2018-01-14 17:41:53 · 964 阅读 · 0 评论 -
Python高级之修饰器
装饰器是程序开发中经常会⽤到的⼀个功能,⽤好了装饰器,开发效率如⻁ 添翼,所以这也是Python⾯试中必问的问题。 写代码要遵循 开放封闭 原则,虽然在这个原则是⽤的⾯向对象开发,但是也 适⽤于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改, 但可以被扩展,即: 封闭:已实现的功能代码块 开放:对扩展开发现有如下代码块:# coding = 'utf-8'def f原创 2017-12-25 17:46:43 · 750 阅读 · 0 评论 -
回溯法:最小重量机器设计问题(python解决)
问题描述: 最小重量机器设计问题:设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设 w[i][j] 是从供应商j处购得的部件 i 的重量, c[i][j]是相应的价格。试设计一个算法,给出总价格不超过 p 的最小重量机器设计。 利用回溯法求解问题,首先可以为该题的二维数组w、c赋初值,不妨令n=3,m=2、p=60。构造回溯法中的解空间树,大概如下: 根据回溯法的要求原创 2017-11-18 15:37:00 · 3491 阅读 · 0 评论 -
在windows下使用python3连接sqlserver
利用python连接sqlserver数据库,一开始总是出现错误。错误如下:Traceback (most recent call last): File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734) File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c原创 2017-11-12 17:28:53 · 31514 阅读 · 4 评论 -
python——三道贪心算法例题
1.找零钱问题:假设只有 1 分、 2 分、五分、 1 角、二角、 五角、 1元的硬币。在超市结账 时,如果 需要找零钱, 收银员希望将最少的硬币数找给顾客。那么,给定 需要找的零钱数目,如何求得最少的硬币数呢?2.求最大子数组之和问题:给定一个整数数组(数组元素有负有正),求其连续子数组之和的最大值。3.汽车加油站问题原创 2017-10-24 21:44:39 · 15733 阅读 · 10 评论 -
web框架的原理以及web框架的实现(python)
在学习了动态服务器的实现之后(wsgi),便引入了web框架。何为web框架?其实就相当于人的骨架一样,有了框架之后我们便可以往里面添加肉,添加各种需要添加的,由此而组成了一个人。而web也是如此,我们希望用户可以直接往框架里添加功能,同时不用去管怎样处理用户的请求,即我们要实现一个方法,可以将用户的请求(无论是静态资源还是动态资源)进行路由分发,分配给具体的函数去执行(这也就是web框架的主体)。原创 2017-09-23 13:39:57 · 2025 阅读 · 0 评论 -
python中去掉字符串中的\xa0、\t、\n
今天帮女朋友从网络上收集一些信息,但是发现提取出的信息中有“\xa0”,并且无法去掉,查阅了相关资料,后发现该字符表示空格。\xa0 是不间断空白符 我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。 而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space原创 2017-09-22 12:21:52 · 99256 阅读 · 14 评论 -
初试wsgi——实现简易动态http服务器(面向对象版)
静态服务器学习完毕后,我们开始学习动态的http服务器,要实现的功能很简单,便是令我们的python脚本程序可以在我们的服务器上跑起来。比如用户通过浏览器请求一个python脚本程序ctime.py(一个现实当前时间的脚本),我们如何让该程序能在浏览器上跑起来?我们学习了静态的web服务器,知道当用户请求静态页面时,我们将请求的文件名提取出来,并且通过file.open()方法从根目录打开该静态ht原创 2017-09-18 22:25:45 · 1855 阅读 · 0 评论 -
python实现简易web多进程静态服务器
利用python实现了静态web服务器,可以利用浏览器进行测试。#-*- coding:utf-8 -*-from socket import *from multiprocessing import *import re#多进程式并发web服务器#表示html文件的所存在的目录HTML_ROOT_DIR = "./html"def dealWithClient(clientSocket):原创 2017-09-14 14:09:14 · 883 阅读 · 0 评论 -
python正则表达式常见面试题
1.去除以下html文件中的标签,只显示文本信息。<div><p>岗位职责:</p><p>完成推荐算法、数据统计、接口、后台等服务器端相关工作</p><p><br></p><p>必备要求:</p><p>良好的自我驱动力和职业素养,工作积极主动、结果导向</p><p> <br></p><p>技术要求:</p><p>1、一年以上 Python 开发经验,掌握面向对象分析和设计,原创 2017-09-14 13:59:55 · 3743 阅读 · 0 评论 -
python正则表达式——分组的使用
在正则表达式里可以利用分组进行匹配,举例如下: 1.利用分组匹配邮箱地址:>>> s = "wangbo@163.com">>> p = r"(\w{4,20})@(163|qq|gmail|outlook)\.(com)">>> result = re.match(p, s)>>> result.group()'wangbo@163.com'>>> result.group(1)'w原创 2017-09-12 22:35:59 · 2374 阅读 · 0 评论 -
python正则表达式基础——匹配0-100的数
使用正则表达式进行匹配,匹配出1-100的数。不包含(01、02、001等数)。引入re模块,使用match方法进行匹配,并设计正则表达式进行匹配。 代码如下:>>> import re>>> re.match(r"[1-9]?\d?$|100$", "100")<_sre.SRE_Match object; span=(0, 3), match='100'>r表示原始字符; [1-9]?原创 2017-09-12 13:02:29 · 6239 阅读 · 0 评论 -
python3.6 下连接mysql数据库实现用户登录与注册
在python3.6中连接数据库只能使用pymysql包,安装方法直接通过pip install pymysql安装即可,较为方便。 初学者一定要做的便是用户的注册与登录,同时牵涉到数据库的相关操作,可以利用Navicat建立一个简单的数据库,在里面更新、插入一些数据。之后写python文件对数据库进行操作,我们可以写一个MysqlHelp.py文件帮助我们访问、操作数据库,更为方便。代码如下:#原创 2017-09-08 18:57:42 · 8263 阅读 · 1 评论 -
pygame的应用——python版飞机大战
利用pygame实现了简易版飞机大战。源代码如下:# -*- coding:utf-8 -*-import pygameimport sysfrom pygame.locals import *from pygame.font import *import timeimport randomclass Hero(object): #玩家 英雄类 def __init__(原创 2017-09-08 15:13:01 · 11593 阅读 · 8 评论 -
windows下利用协程实现gevent版服务器
协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥? 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机,我们可以把一个协程切换到另一个协程。只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。 通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切原创 2017-09-08 14:59:53 · 930 阅读 · 0 评论 -
Python3.6 下yield的常见错误(AttributeError: 'generator' object has no attribute 'next')
今天在python下写了协程的简单实现,但是竟然出现了错误,代码如下:#-*- coding:utf-8 -*-import timedef A(): while True: print('----A----') yield time.sleep(0.5)def B(c): print('----B----') c.next(原创 2017-09-08 11:29:31 · 13270 阅读 · 1 评论 -
关于epoll版服务器的理解(Python实现)
epoll版服务器实现原理类似于select版服务器,都是通过某种方式对套接字进行检验其是否能收发数据等。但是epoll版的效率要更高,同时没有上限。且epoll版服务器只能在Linux系统中运行。 在select、poll中的检验,是一种被动的轮询检验,而epoll中的检验是一种主动地事件通知检测,即:当有套接字符合检验的要求,便会主动通知,从而进行操作。这样的机制自然效率会高一点。 同时在e原创 2017-09-07 18:48:50 · 1469 阅读 · 1 评论 -
select版tcp服务器(python实现)
在编写了单进程非阻塞式服务器之后,还有另外种写服务器的方法,便是利用select。 select是对底层操作系统的一个访问操作,因而效率较高,比单进程非阻塞中的for循环遍历效率要高,可以利用select进行选择,选择出来可以读取信息的套接字、可以发送信息的套接字、以及产生的异常(分别是三个返回值)。readable, writable, exceptionable = select([], []原创 2017-09-07 14:43:51 · 1531 阅读 · 0 评论 -
Python基础(1)
利用暑假的时间留校进行一个短期的Python培训,几乎都是些简单的Python基础,但是也有很大的学习价值,毕竟这是个又一次从头开始学习一门新语言的机会,同时记录一些学习过程的感悟。一、利用Sublime进行Python的简单交互:在Sublime下可以很方便的进行python的编程,按下Ctrl+B即可进行代码运行(在此Python更偏向于解释型语言),但是无法进行交互,即当你写下原创 2017-07-31 20:10:47 · 369 阅读 · 0 评论 -
python非阻塞式单进程服务器
python的单进程服务器一次只能处理一个客户端,显然是没有实用价值的,但是我们可以将单进程服务器变为非阻塞式的。 利用socket中的setblocking()方法可以将tcp套接字转化为非阻塞式套接字,可处理多个客户端,且不会相互影响,因为是非阻塞式的,但是要注意,转化为非阻塞式之后,如果没有接收到客户端消息则会产生异常,所以要用到异常处理,以及每次接收到的客户端消息不断更新,需要使用列表进行原创 2017-09-07 00:17:21 · 1367 阅读 · 0 评论 -
Python版单进程、多进程、多线程服务器
在学习了Python的网络编程以及计算机网络的相关知识之后,编写了Python版的服务器。有三种实现方式,分别是单进程、多进程、多线程。 实现原理:建立tcp套接字,为该套接字绑定本机信息,之后进入循环,令tcp套接字接收信息,并传递给客户端套接字以及收集客户端地址,然后再次进入循环,服务器套接字不断接收客户端传递进来的信息,判断信息(字符串)长度是否为零,若为0则表示客户端已经关闭。 单进程的原创 2017-09-06 14:15:42 · 2157 阅读 · 0 评论 -
利用Python实现多线程聊天功能
关于Python网络编程,写了一个利用多线程、套接字等,实现多线程聊天功能,可以随时的发送,接收,可利用网络调试助手进行本地测试。源代码如下:#-*- coding:utf-8 -*-from threading import Threadfrom socket import *#1.实现接收消息def recvDate(): while True: recvInfo原创 2017-08-15 17:29:47 · 2209 阅读 · 0 评论 -
Python高级之——浅拷贝、深拷贝(deepcopy、copy的区别)
在python里有深浅拷贝之说,何为浅拷贝? 看代码:>>> a = [11,22,33]>>> b = a>>> id(a)25084152>>> id(b)25084152>>> b.append(44)>>> a[11, 22, 33, 44]>>> b[11, 22, 33, 44]这便是最简单的浅拷贝,可以发现a、b地址相同,指向同一片内存(拷贝的是引用),同时改变b原创 2017-08-14 16:52:14 · 2141 阅读 · 0 评论 -
关于递归的总结——汉诺塔、素因数的求解(Python实现)
在Python函数的学习中,再次对函数的递归感到了迷惑,都说递归逻辑清晰,应用简单,但是在应用中却总有些不理解的地方,甚至感到很疑惑,在此进行总结,希望能理解。首先看一下阶乘的递归求法:def getNum(num): if num > 1: result = num * getNum(num-1) else: result = 1 return resulta = getNu原创 2017-08-09 21:02:37 · 725 阅读 · 0 评论 -
Python易错点整理——for和else的搭配使用、global的使用
今天编程时遇到了一些Python中易犯的错误,总结如下:一、for和else的搭配使用:在Python中for循环可以和else搭配使用,但是有些细节地方容易出错,比如:for i in xrange(1,10): if i == 1: print("Yes")else: print("No")你可能打算希望程序最终输出Yes,但是在这个程序段中最终输出的是Yes和N原创 2017-08-05 15:49:27 · 5077 阅读 · 0 评论 -
关于Python中的引用传值
学习了Python后,感觉到对Python里的引用传值有些疑惑,搜集了一些资料,同时编了一些实例,在此对引用传值解惑一下,分享给大家。在Python里,一切事物皆为对象,并且规定参数的传递都是对象的引用。python参数传递都是“传对象引用”方式。实际上相当于c++中传值和传引用的结合。首先我们可以看一下c++里传值的方法:#include#includeusing nam原创 2017-08-09 09:27:55 · 808 阅读 · 0 评论 -
Python的魔法方法
据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。Python 的魔术方法非常强大,然而随之而来的则是责任。了解正确的方法去使用非转载 2017-08-08 15:30:59 · 420 阅读 · 0 评论 -
Python基础(6)——实现输入任意多个数,并计算其平均值
此程序不光可以运算平均值,可以应用于一切需要多个数据输入(在一行内完成)的程序中。利用字符串的分割实现了输入任意多个数据,并计算其平均值的小程序。思路是接收输入的字符串,以空格为分隔符,将分割的数据存入列表(lst1)中,将lst1中的数据转存入另一个空列表(lst)中,转存时将字符串转化为整型,从而利用函数求出lst中数的和、平均值,是Python基础(5)中结尾程序的升级版。原创 2017-08-04 17:23:18 · 80506 阅读 · 5 评论 -
八皇后问题——用Python解决
八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2。而且仅当 n2 = 1 或 n1 ≥ 3 时问题有解。这是一个典型的回溯算法,我们可以将问题进行分解:原创 2017-08-06 20:30:58 · 2652 阅读 · 0 评论 -
Python中的生成器——yield
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前转载 2017-08-06 20:38:21 · 410 阅读 · 0 评论 -
Python基础(7)——名片管理系统(实现了数据简单的存储、修改、删除、查看等)
进行了一些Python基础知识的学习后,将这些知识进行综合,实现了名片管理小系统,可以进行数据的增删改查。主要思路是将名片(信息)存进字典里,再将字典存入列表里,方便进行增删改查。代码如下:原创 2017-08-04 17:28:11 · 1930 阅读 · 0 评论 -
Python基础(5)——函数的执行,调用,嵌套
如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数关键词:封装、独立功能、代码块、模块、调用 Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。在学习过程中老师提出一个问题input()函数是否有返回值,答案自然是肯定的,input()必然有返回值,在Pyt原创 2017-08-04 17:08:20 · 1477 阅读 · 0 评论 -
Python基础(3)——北京市地铁买票问题(思维练习题)
Python基础练习,进行循环与条件判断的嵌套,有一道逻辑练习题如下:根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用提示信息:北京公交地铁新票价确定据北京市发改委网站消息称,北京市将从2015年12月28起实施公共交通新票价:地铁6公里(含)内3元,公交车10公里(含)内2元,使用市政交通一卡通刷卡乘公交车普通卡5折,学生卡2.5折。 具体实施方案如下原创 2017-08-01 23:02:11 · 5983 阅读 · 1 评论 -
Python基础(4)——字符串、列表、元组、字典
Python:字符串、列表、元祖、字典原创 2017-08-02 23:15:17 · 784 阅读 · 0 评论 -
Python基础(2)——Python选择、循环结构
Python的循环结构: •while循环一般通过数值是否满足来确定循环的条件•for循环一般是对能保存多个数据的变量,进行便利•if、while、for等其他语句可以随意组合,这样往往就完成了复杂的功能郑老 2017/8/1 16:32:53◦continue的作用:用来结束本次循环,紧接着执行下一次的循环•break/continue只能用在循环中,除此以外不能原创 2017-08-01 16:39:09 · 790 阅读 · 0 评论