Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

Gashlycrumb

https://www.youtube.com/playlist?list=PLhOuww6rJJNMxWy34-9jlD2ulZxaA7mxV

Write a program that prints the line from a file starting with a given letter:

$ ./gashlycrumb.py a
A is for Amy who fell down the stairs.

By default, the -f or --file should use the included gashlycrumb.txt file, but can be overridden:

$ ./gashlycrumb.py a -f alternate.txt
A is for Alfred, poisoned to death.

The structure of the file is such:

$ head alternate.txt
A is for Alfred, poisoned to death.
B is for Bertrand, consumed by meth.
C is for Cornell, who ate some glass.
D is for Donald, who died from gas.
E is for Edward, hanged by the neck.
F is for Freddy, crushed in a wreck.
G is for Geoffrey, who slit his wrist.
H is for Henry, who's neck got a twist.
I is for Ingrid, who tripped down a stair.
J is for Jered, who fell off a chair.

The program should accept one or more letters as positional arguments, printing each line or a message that the given argument is not present in the file:

$ ./gashlycrumb.py x 4 z -f alternate.txt
X is for Xavier, stuck through with a prong.
I do not know "4".
Z is for Zora, smothered by a fleece.

If given no arguments, it should print a brief usage:

$ ./gashlycrumb.py
usage: gashlycrumb.py [-h] [-f FILE] letter [letter ...]
gashlycrumb.py: error: the following arguments are required: letter

Or a longer usage for -h or --help:

$ ./gashlycrumb.py -h
usage: gashlycrumb.py [-h] [-f FILE] letter [letter ...]

Gashlycrumb

positional arguments:
  letter                Letter(s)

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  Input file (default: gashlycrumb.txt)

The program should reject a bad --file argument:

$ ./gashlycrumb.py -f alskdf
usage: gashlycrumb.py [-h] [-f str] str [str ...]
gashlycrumb.py: error: argument -f/--file: can't open 'alskdf': \
[Errno 2] No such file or directory: 'alskdf'

Run the test suite to ensure your program is correct:

$ make test
pytest -xv test.py
============================= test session starts ==============================
...
collected 8 items

test.py::test_exists PASSED                                              [ 12%]
test.py::test_usage PASSED                                               [ 25%]
test.py::test_bad_file PASSED                                            [ 37%]
test.py::test_a PASSED                                                   [ 50%]
test.py::test_b_c PASSED                                                 [ 62%]
test.py::test_y PASSED                                                   [ 75%]
test.py::test_o_alternate PASSED                                         [ 87%]
test.py::test_bad_letter PASSED                                          [100%]

============================== 8 passed in 0.50s ===============================
Morty Proxy This is a proxified and sanitized view of the page, visit original site.