27.9 Exercises
This chapter is full of programs we encourage you to type in and play
with. However, here are a few more challenging exercises:
See Section
B.8.1 for the solutions.
Avoiding regular expressions. Write a program
that obeys the same requirements as pepper.py
but doesn't use regular expressions to do the job.
This is somewhat difficult, but a useful exercise in building program
logic. Wrapping a text file with a class. Write a class
that takes a filename and reads the data in the corresponding file as
text. Make it so that this class has three attributes: paragraph,
line, word, each of which take an integer argument, so that if
mywrapper is an instance of this class, printing
mywrapper.paragraph(0) prints the first paragraph
of the file, mywrapper.line(-2) prints the
next-to-last line in the file, and
mywrapper.word(3) prints the fourth word in the
file. Describing a directory. Write a function that
takes a directory name and describes the contents of the directory,
recursively (in other words, for each file, print the name and size,
and proceed down any eventual directories). Modifying the prompt. Modify your interpreter so
that the prompt is, instead of the >>>
string, a string describing the current directory and the count of
the number of lines entered in the current Python session. Two hints:
the prompt variables (e.g., sys.ps1)
doesn't have to be a string but can be any object;
printing an instance can have side effects, and is done by calling
the instance's __repr__ method. Writing a shell. Using the
Cmd class in the cmd module and
the functions described in this chapter for manipulating files and
directories, write a little shell that accepts the standard Unix
commands (or DOS commands): ls
(dir) for listing the current directory,
cd for changing directory, mv
(or ren) for moving/renaming a file, and
cp (copy) for copying a file. Redirecting stdout. Modify the
mygrep.py script to output to the last file
specified on the command line instead of to the console.
|