zoukankan      html  css  js  c++  java
  • Python核心编程——Chapter9

    好久没写过Python了,前一阵子忙这忙那的,都几乎把Python给丢掉了,话不多说,马上开始。

    9.1.文件过滤。显示一个文件的所有行,并且忽略以井号开头的行。

    其实这个题目比较基础,用shell语言的话,一行就能搞定。还是做一下吧。

    用shell语言+正则:

    dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep -v '^#'

    用python:

     1 #!/usr/bin/env python
     2 #-*-coding=utf-8-*-
     3 
     4 def show(filename):
     5     f = open(filename,'r')
     6     for eachLine in f:
     7         if eachLine[0] != '#':
     8             print eachLine,
     9 
    10 if __name__ == '__main__':
    11     show('/home/dzhwen/regular_express.txt')

    9.2.又是文件访问题目,显示文件F的前N行

    shell:

    dzhwen@deng:~/python文件/Homework/Chapter9$ head -n N F

    python:

     1 #!/usr/bin/env python
     2 #-*-coding=utf-8-*-
     3 
     4 def head():
     5     filename = raw_input('请输入文件名称:')
     6     lines = raw_input('请输入行数:')
     7     start = 0
     8     f = open(filename,'r')
     9     while start < int(lines):
    10         print f.next(),
    11         start += 1
    12 
    13 if __name__ == '__main__':
    14     head()

    9.3.文件信息。显示一个文件的总行数

    shell:

    dzhwen@deng:~/python文件/Homework/Chapter9$ wc -l regu*
    22 regular_express.txt

    python:

    >>> f = open('/home/dzhwen/regular_express.txt')
    >>> list = f.readlines()
    >>> len(list)
    22

     9.14.将计算器程序修改成接受命令行参数

    这道题目还是挺有挑战性的。用到的是sys模块的命令行参数

     1 #!/usr/bin/env python
     2 #-*-coding=utf-8-*-
     3 
     4 import sys
     5 
     6 def calc():
     7     f = open('/home/dzhwen/123.txt','a+')
     8     list = sys.argv
     9     if list[1] == 'print':
    10         for eachLine in f:
    11             print eachLine,
    12         return -1
    13     if list[2] == '+':
    14         ca = list[1:]
    15         for char in ca:
    16             f.write(char+' ')
    17         f.write('
    ')
    18         f.write(str(float(list[1]) + float(list[3]))+'
    ')
    19     if list[2] == '-':
    20         ca = list[1:]
    21         for char in ca:
    22             f.write(char+' ')
    23         f.write('
    ')
    24         f.write(str(float(list[1]) - float(list[3]))+'
    ')
    25     if list[2] == '*':
    26         ca = list[1:]
    27         for char in ca:
    28             f.write(char+' ')
    29         f.write('
    ')
    30         f.write(str(float(list[1]) * float(list[3]))+'
    ')
    31     if list[2] == '/':
    32         ca = list[1:]
    33         for char in ca:
    34             f.write(char+' ')
    35         f.write('
    ')
    36         f.write(str(float(list[1]) / float(list[3]))+'
    ')
    37     if list[2] == '%':
    38         ca = list[1:]
    39         for char in ca:
    40             f.write(char+' ')
    41         f.write('
    ')
    42         f.write(str(float(list[1]) % float(list[3]))+'
    ')
    43     if list[2] == '^':
    44         ca = list[1:]
    45         for char in ca:
    46             f.write(char+' ')
    47         f.write('
    ')
    48         f.write(str(float(list[1]) ** float(list[3]))+'
    ')
    49 
    50 if __name__ == '__main__':
    51     calc()

    9.15.复制文件,将第一个文件的内容复制到第二个文件中去。

    同时打开两个通道看可不可以。

    #!/usr/bin/env python
    #-*-coding=utf-8-*-
    
    def copy(file1,file2):
        f = open(file1,'r')
        g = open(file2,'a+')
        for eachLine in f:
            g.write(eachLine)
    
    if __name__ == '__main__':
        copy('/home/dzhwen/123.txt','/home/dzhwen/456.txt')

     9.18.搜索文本。查找一个字符在文中的出现次数。

    shell:

    dzhwen@deng:~/python文件/Homework/Chapter9$ cat regular_express.txt | grep '#' |wc -l
    5

    python:没有现成函数,唯有用count

     1 #!/usr/bin/env python
     2 #-*-coding=utf-8-*-
     3 
     4 def charcount(filename):
     5     num = raw_input('请输入字节值:')
     6     Count = 0
     7     f = open(filename,'r')
     8     for eachLine in f:
     9         Count += eachLine.count(chr(int(num)))
    10     return Count
    11 
    12 if __name__ == '__main__':
    13     print charcount('/home/dzhwen/regular_express.txt')
  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/sysu-blackbear/p/3594636.html
Copyright © 2011-2022 走看看