| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
https://www.youtube.com/playlist?list=PLhOuww6rJJNNZEMX12PE1OvSKy02UQoB4
Write a program that will generate the verse "The Twelve Days of Christmas" song:
$ ./twelve_days.py | tail Ten lords a leaping, Nine ladies dancing, Eight maids a milking, Seven swans a swimming, Six geese a laying, Five gold rings, Four calling birds, Three French hens, Two turtle doves, And a partridge in a pear tree.
The program should accept a -n or --number (default 12) to control the number of verses that are generated:
$ ./twelve_days.py -n 2 On the first day of Christmas, My true love gave to me, A partridge in a pear tree. On the second day of Christmas, My true love gave to me, Two turtle doves, And a partridge in a pear tree.
A number outside the range 1-12 should be rejected:
$ ./twelve_days.py -n 21 usage: twelve_days.py [-h] [-n days] [-o FILE] twelve_days.py: error: --num "21" must be between 1 and 12
If the -o or --outfile argument is present, the output should be printed to the named file and no output should appear on the command line:
$ ./twelve_days.py -o out.txt
There should now be an out.txt file with the output:
$ wc -l out.txt
113 out.txt
The program should respond to -h and --help with a usage:
$ ./twelve_days.py -h
usage: twelve_days.py [-h] [-n days] [-o FILE]
Twelve Days of Christmas
optional arguments:
-h, --help show this help message and exit
-n days, --num days Number of days to sing (default: 12)
-o FILE, --outfile FILE
Outfile (default: <_io.TextIOWrapper name='<stdout>'
mode='w' encoding='utf-8'>)
$ make test pytest -xv test.py ============================= test session starts ============================== ... collected 7 items test.py::test_exists PASSED [ 14%] test.py::test_usage PASSED [ 28%] test.py::test_bad_num PASSED [ 42%] test.py::test_one PASSED [ 57%] test.py::test_two PASSED [ 71%] test.py::test_all_stdout PASSED [ 85%] test.py::test_all PASSED [100%] ============================== 7 passed in 1.92s ===============================
| Back | FazBrowse Home | New Git URL |