笨方法学python笔记(1)

来源:互联网 发布:天尚网络电视机顶盒 编辑:程序博客网 时间:2024/05/29 15:54

刚入职,目前在做测试,但是一直做黑盒测试也不是长久的办法,所以想利用空余时间学点什么。Python作为一种应用广泛的脚本语言,非常适合用来练手。目前选了《笨方法学python》作为学习教材,一边看一边敲代码。为了记录学习过程,特开此博客,将进度记录下来。欢迎大家指正文中的错误和不足。摘取的书中内容仅作为学习交流用途,如有侵权的地方,请及时告知。


目前进行到习题20,函数部分。

#-*- coding: utf-8 -*- from sys import argvscript, input_file = argvdef print_all(f):print f.read()def rewind(f):f.seek(0)def print_a_line(line_count, f):print line_count, f.readline()currnt_file = open(input_file)print "First let's print the whole file:\n"print_all(currnt_file)print "Now let's rewind, kind of like tape."rewind(currnt_file)print "Let's print three lines:"currnt_line = 1print_a_line(currnt_line, currnt_file)currnt_line = currnt_line + 1print_a_line(currnt_line,currnt_file)currnt_line = currnt_line +1print_a_line(currnt_line, currnt_file)

图片中是运行的结果。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

加分习题1,要对脚本进行注释。

答:下面贴出我自己写的注释。虽然很笨,但也算是一步步走的稳一点,慢就慢了

#-*- coding: utf-8 -*- #导入模组from sys import argv#解包,argv变量包括两个参数,一个是脚本文件名,一个是要操作的文件名称script, input_file = argv#定义函数print_all,作用是打印文件内容def print_all(f):print f.read()#定义函数rewind,调用了seek函数,设置文件的当前位置和偏移#fileObject.seek(p,n),其中n可以取0,1,2#n=0  移动到文件第o个字节处,绝对位置#n=1 移动到相对于当前位置之后的p个字节#n=3 移动到相对文章尾之后的p个字节def rewind(f):f.seek(0)#定义函数print_a_line,功能是打印读取文件内容的选定行def print_a_line(line_count, f):print line_count, f.readline()#打开需要的文件currnt_file = open(input_file)#打印语句print "First let's print the whole file:\n"#打印需要的文件内容print_all(currnt_file)#打印语句print "Now let's rewind, kind of like tape."#调用函数rewindrewind(currnt_file)#打印语句print "Let's print three lines:"#设置选定行为1currnt_line = 1#调用print_a_line 函数,实现功能是打印选定文件的第1行print_a_line(currnt_line, currnt_file)#选定行赋值为1+1=2currnt_line = currnt_line + 1#调用print_a_line函数,实现功能是打印选定文件的第2行print_a_line(currnt_line,currnt_file)#选定行赋值为2+1=3currnt_line = currnt_line +1#调用print_a_line函数,实现功能是打印选定文件的第3行print_a_line(currnt_line, currnt_file)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
加分习题2:每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量。在每次调用函数时,打印出 current_line 的值,跟踪一下它在print_a_line 中是怎样变成 line_count 的。

答:

currnt_line = 1#调用print_a_line 函数,实现功能是打印选定文件的第1行print_a_line(currnt_line, currnt_file)#选定行赋值为1+1=2currnt_line = currnt_line + 1#调用print_a_line函数,实现功能是打印选定文件的第2行print_a_line(currnt_line,currnt_file)#选定行赋值为2+1=3currnt_line = currnt_line +1#调用print_a_line函数,实现功能是打印选定文件的第3行print_a_line(currnt_line, currnt_file)
从中可以看出,首先要对变量current_line进行赋值,第3行代码中对current_line重新赋值,类似于自加1,此时变量current_line的值为2,第5行也是如此,此时current_line的值为3

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

加分习题3:找出脚本中每一个用到函数的地方。检查 def 一行,确认参数没有用错。

这个检查过了,语法没问题

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

加分习题4:上网研究一下 file 中的 seek 函数是做什么用的。试着运行 pydoc file 看看能不能学到更多。

答:百度了一下,网址为:http://www.jb51.net/article/112331.htm

seek()函数是属于文件操作中的函数,用来移动文件读取指针到指定位置。
语法:

fileObject.seek(offset[, whence])

offset – 开始的偏移量,也就是代表需要移动偏移的字节数

whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

seekdemo.py

readline()函数会读取整行字符串,所以文件读取指针会移动到下一行。

这里贴出了自己写的demo

#-*- coding: utf-8 -*- #seek函数的应用示例#seekdemo的文件内容为#########################123456789#abcdefghi#ABCDEFGHI#123456789#987654321f = open("seekdemo.txt")print(f.readline())print(f.readline())f.seek(0,0)print(f.readline())f.seek(4,1)print(f.readline())#seek默认whence为0,如果括号中只有一个数字,那么这个数字为offset的值,如下语句中f.seek(2)等同于seek(2,0)f.seek(2)print(f.readline())f.seek(2,0)print(f.readline())

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

加分习题5. 研究一下 += 这个简写操作符的作用,写一个脚本,把这个操作符用在里边试一下。

答:

a = 2print aa+=aprint a

####################################################################################################################################

总结:这一部分强化了函数的练习,并且对seek和readline函数的用法有了更多的理解和运用

原创粉丝点击