笨办法学Python(二十)

习题 20: 函数和文件

    回忆一下函数的要点,然后一边做这节练习,一边注意一下函数和文件是如何在一起协作发挥作用的。

 1 from sys import argv
 2 
 3 script, input_file = argv
 4 
 5 def print_all(f):
 6     print f.read()
 7 
 8 def rewind(f):
 9     f.seek(0)
10 
11 def print_a_line(line_count, f):
12     print line_count, f.readline()
13 
14 current_file = open(input_file)
15 
16 print "First let's print the whole file:\n"
17 
18 print_all(current_file)
19 
20 print "Now let's rewind, kind of like a tape."
21 
22 rewind(current_file)
23 
24 print "Let's print three lines:"
25 
26 current_line = 1
27 print_a_line(current_line, current_file)
28 
29 current_line = current_line + 1
30 print_a_line(current_line, current_file)
31 
32 current_line = current_line + 1
33 print_a_line(current_line, current_file)
View Code

    特别注意一下,每次运行 print_a_line 时,我们是怎样传递当前的行号信息的。

你应该看到的结果

 

 

加分习题

  1. 通读脚本,在每行之前加上注解,以理解脚本里发生的事情。
  2. 每次 print_a_line 运行时,你都传递了一个叫 current_line 的变量。在每次调用函数时,打印出 current_line 的至,跟踪一下它在 print_a_line 中是怎样变成 line_count 的。
  3. 找出脚本中每一个用到函数的地方。检查 def 一行,确认参数没有用错。
  4. 上网研究一下 file 中的 seek 函数是做什么用的。试着运行 pydoc file 看看能不能学到更多。
  5. 研究一下 += 这个简写操作符的作用,写一个脚本,把这个操作符用在里边试一下。

 

习题练习

1.

 1 # 从 SYS 模组导入argv
 2 from sys import argv
 3 
 4 # 把 argv 的列表变量赋值给 script 和 input_file
 5 script, input_file = argv
 6 
 7 # 定义 print_all 函数
 8 def print_all(f):
 9 #   打印形参内容
10     print f.read()
11 
12 # 定义 rewind 函数
13 def rewind(f):
14 #   函数使用 seek 设置文件指针偏移
15     f.seek(0)
16 
17 # 定义 print_a_line 函数
18 def print_a_line(line_count, f):
19 #   readline() 读取一行内容,并将文件内部指针移向下一行
20     print line_count, f.readline()
21 
22 # 用 open 函数打开文件,并赋值给 current_file 变量
23 current_file = open(input_file)
24 
25 print "First let's print the whole file:\n"
26 
27 print_all(current_file)
28 
29 print "Now let's rewind, kind of like a tape."
30 
31 rewind(current_file)
32 
33 print "Let's print three lines:"
34 
35 # 行号变量置 1
36 current_line = 1 
37 print_a_line(current_line, current_file)
38 
39 # 行号变量加 1
40 current_line = current_line + 1
41 print_a_line(current_line, current_file)
42 
43 current_line = current_line + 1
44 print_a_line(current_line, current_file)

 

2.

    readline()方法从文件中读取一整行。尾部的换行符保持在字符串中。

  http://www.jb51.net/article/66630.htm

  https://zhidao.baidu.com/question/1306305405518632699.html

 

4.

  seek()方法在偏移设定该文件的当前位置。没有返回值。

  http://blog.csdn.net/yyywyr/article/details/45508819

  http://blog.csdn.net/solo95/article/details/50564575

  http://www.jb51.net/article/66631.htm

 

5.

    a += b 即等同于 a = a + b

  

posted @ 2017-08-23 22:21  纟彖氵戋  阅读(231)  评论(0编辑  收藏  举报