写在前面:作为一个非科班出身的“程序媛”已经好多天都没写过代码了,本科时候学过的那些C/C++也从来没有没有真正掌握过,因此开始进行每天编程一小时活动。虽然每天一小时时间不是很长,但我相信“不积跬步无以至千里”,坚持这项活动不为别的,只是想真正去投入一件事情。
从本科学习C/C++的经历来看,用这两门语言去做点事情,真是太困难了,好多代码都要自己写,根据网上很多老程序员的推荐,决定先从很好上手的python开始学起。目前是第一阶段,学习python的语法,使用《简明python教程》作为学习资料。《简明python教程》写的很简洁,很好上手,但是该教程是基于python 2.x的好像,对于python 3.x很多函数都已经不适用了。从开始“每天编程一小时”到今天共五天,已经学习到了错误处理部分了。
下一步学习计划:基本掌握python语法之后,开始学习《统计思维:程序员数学之概率统计》,这本书是基于python介绍了统计基本知识的程序员数学教程,刚好可以弥补一下之前概率论没好好学的遗憾。在完成阅读并根据本书要求编写代码之后通读一遍python 3.4.0的documentation,主要是想看看之前学习的部分有没有什么遗漏的地方。再之后可能就去学一些python网络编程,或者是gui方面的知识了吧,不过这都是后话了。
《简明python教程》旧版本部分在新版本上的编程语法问题:
- 旧版:print 'Hello World'
新版:print('Hello world') - 在windows下运行python脚本时,原文给出的代码为:
实际用的时候是不需要加上上面代码的python的,直接给出脚本文件地址就好了<span style="font-family:KaiTi_GB2312;font-size:18px;">python yourcode.py</span>
- 旧版:
以上代码输出结果是打印出来的'Helloworld'在同一行显示,但是在新版里面这样已经行不通了。<span style="font-family:KaiTi_GB2312;font-size:18px;">print 'Hello', print 'world'</span>
以上为新版代码,end=''单引号中可以加入不同内容,作为连接两个字符串的部分,例如:<span style="font-family:KaiTi_GB2312;font-size:18px;">print('Hello',end='') print('world')</span>
打印结果为'Hello world'注意中间的空格。<span style="font-family:KaiTi_GB2312;font-size:18px;">print('Hello',end=' ') print('world')</span>
- 本书第十章“解决问题——编写一个Python脚本”给出了一个备份打包文件夹的例子,其中作者直接使用'zip'的命令行进行打包的,但是在我的机器(window 8 pro)上这样做会提示没有这个命令。我查了一些windows下不使用第三方程序命令行打包的资料,国外网站上给出了解决方案:
我试了一下,会提示没有_zipIt.vbs命令。详细信息请见:这里<span style="font-family:KaiTi_GB2312;font-size:18px;">set FILETOZIP=c:\ue_english.txt set TEMPDIR=C:\temp738 rmdir %TEMPDIR% mkdir %TEMPDIR% copy %FILETOZIP% %TEMPDIR% echo Set objArgs = WScript.Arguments > _zipIt.vbs echo InputFolder = objArgs(0) >> _zipIt.vbs echo ZipFile = objArgs(1) >> _zipIt.vbs echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs echo wScript.Sleep 2000 >> _zipIt.vbs CScript _zipIt.vbs %TEMPDIR% C:\someArchive.zip pause</span>
- 《简明Python教程》中给出了读取文件的方式:
但新版中应该是没有file这个函数了,所以用一下方式读取或写入文件:<span style="font-family:KaiTi_GB2312;font-size:18px;">f = file('poem.txt', 'w') # open for 'w'riting</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">f = open('poem.txt', 'w') # open for 'w'riting f = open('poem.txt', 'r') # open for 'r'ading</span>
- 第十二章存储器部分给出了文档序列化方式,使用的module pickle,原文说明了有两种模块,一种是pure python,另一种为c实现的,c的速度更快,需要引入的moduel为cPickle,但新版中统一了两个模块的使用方式为:
使用下面方式会报错:<span style="font-family:KaiTi_GB2312;font-size:18px;">import pickle</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">import cPickle</span>
- 第十二章介绍的序列化方式使用了函数dump,但是在运行的时候会报错:
有问题的代码已经高亮标出,正确的写法如下:<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="background-color: rgb(255, 255, 0);">import cPickle as p</span> #import pickle as p shoplistfile = 'shoplist.data' # the name of the file where we will store the object shoplist = ['apple', 'mango', 'carrot'] # Write to the file <span style="background-color: rgb(255, 255, 0);">f = file(shoplistfile, 'w')</span> p.dump(shoplist, f) # dump the object to a file f.close() del shoplist # remove the shoplist # Read back from the storage <span style="background-color: rgb(255, 255, 0);">f = file(shoplistfile)</span> storedlist = p.load(f) print storedlist</span>
也就是说在dump和load的时候要以二进制的形式读写。<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="background-color: rgb(255, 255, 0);">import pickle as p</span> #import pickle as p shoplistfile = 'shoplist.data' # the name of the file where we will store the object shoplist = ['apple', 'mango', 'carrot'] # Write to the file <span style="background-color: rgb(255, 255, 0);">f = file(shoplistfile, 'wb')</span> p.dump(shoplist, f) # dump the object to a file f.close() del shoplist # remove the shoplist # Read back from the storage <span style="background-color: rgb(255, 255, 0);">f = file(shoplistfile, 'rb')</span> storedlist = p.load(f) print storedlist</span>
我目前遇到的一些比较重要的问题也就是以上几点了。