zoukankan      html  css  js  c++  java
  • 笨办法学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:
    "
    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:
    "
    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

      

  • 相关阅读:
    P1001 A+B Problem
    NOIP2015D1T2 信息传递
    海淀区赛游记。。。。
    P3375 【模板】KMP字符串匹配
    Print Article HDU
    BZOJ-2-4870: [Shoi2017]组合数问题 矩阵优化 DP
    BZOJ-1- 4868: [Shoi2017]期末考试-三分
    #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
    湖南大学第十四届ACM程序设计新生杯(重现赛)
    Codeforces Round #530 (Div. 2)
  • 原文地址:https://www.cnblogs.com/yllinux/p/7420559.html
Copyright © 2011-2022 走看看