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

Commit 763dc2a

Browse filesBrowse files
committed
better solutions
1 parent d3bf3cf commit 763dc2a
Copy full SHA for 763dc2a

File tree

Expand file treeCollapse file tree

12 files changed

+93
-218
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

12 files changed

+93
-218
lines changed
Open diff view settings
Collapse file

‎article/test.py‎

Copy file name to clipboardExpand all lines: article/test.py
+4-5Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
#!/usr/bin/env python3
22
"""tests for article.py"""
33

4-
import re
54
import os
65
from subprocess import getstatusoutput, getoutput
76

87
prg = './article.py'
98
consonant_words = [
10-
'bear', 'cow', 'deer', 'frog', 'giraffe', 'horse', 'jackyl', 'kestrel',
9+
'bear', 'cow', 'dragon', 'frog', 'giraffe', 'horse', 'jackyl', 'kestrel',
1110
'lion', 'marmot', 'nutria', 'porpoise', 'quark', 'rooster', 'sturgeon',
12-
'turtle', 'vermin', 'walrus', 'xray', 'yoosy', 'zebra'
11+
'turtle', 'vermin', 'walrus', 'xolo', 'yak', 'zebra'
1312
]
14-
vowel_words = ['appaloosa', 'elephant', 'ingot', 'octopus', 'unicorn']
13+
vowel_words = ['appaloosa', 'elephant', 'ingot', 'octopus', 'ungulate']
1514

1615

1716
# --------------------------------------------------
@@ -28,7 +27,7 @@ def test_usage():
2827
for flag in ['-h', '--help']:
2928
rv, out = getstatusoutput('{} {}'.format(prg, flag))
3029
assert rv == 0
31-
assert re.match("usage", out, re.IGNORECASE)
30+
assert out.lower().startswith('usage')
3231

3332

3433
# --------------------------------------------------
Collapse file

‎bin/new.py‎

Copy file name to clipboardExpand all lines: bin/new.py
+10-9Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def main():
8181
email=args.email,
8282
purpose=args.purpose,
8383
date=str(date.today()))
84-
text = simple() if args.simple else body()
84+
text = simple() if args.simple else body(args.purpose)
8585

8686
out_fh = open(program, 'w')
8787
out_fh.write(header + text)
@@ -130,8 +130,8 @@ def main():
130130

131131

132132
# --------------------------------------------------
133-
def body():
134-
return """
133+
def body(purpose):
134+
text = """
135135
import argparse
136136
import os
137137
import sys
@@ -142,7 +142,7 @@ def get_args():
142142
\"\"\"Get command-line arguments\"\"\"
143143
144144
parser = argparse.ArgumentParser(
145-
description='Argparse Python script',
145+
description='{}',
146146
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
147147
148148
parser.add_argument('positional',
@@ -189,17 +189,18 @@ def main():
189189
flag_arg = args.on
190190
pos_arg = args.positional
191191
192-
print('str_arg = "{}"'.format(str_arg))
193-
print('int_arg = "{}"'.format(int_arg))
194-
print('file_arg = "{}"'.format(file_arg.name))
195-
print('flag_arg = "{}"'.format(flag_arg))
196-
print('positional = "{}"'.format(pos_arg))
192+
print('str_arg = "{{}}"'.format(str_arg))
193+
print('int_arg = "{{}}"'.format(int_arg))
194+
print('file_arg = "{{}}"'.format(file_arg.name))
195+
print('flag_arg = "{{}}"'.format(flag_arg))
196+
print('positional = "{{}}"'.format(pos_arg))
197197
198198
199199
# --------------------------------------------------
200200
if __name__ == '__main__':
201201
main()
202202
"""
203+
return text.format(purpose)
203204

204205
# --------------------------------------------------
205206
def get_defaults():
Collapse file

‎bottles_of_beer/Makefile‎

Copy file name to clipboardExpand all lines: bottles_of_beer/Makefile
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22

33
test:
44
pytest -xv test.py
5+
6+
sums:
7+
./mk-sums.sh > sums.txt
Collapse file
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ def verse(bottle):
3434
next_bottle = bottle - 1
3535
s1 = '' if bottle == 1 else 's'
3636
s2 = '' if next_bottle == 1 else 's'
37+
num_next = 'No more' if next_bottle == 0 else next_bottle
3738
return '\n'.join([
3839
f'{bottle} bottle{s1} of beer on the wall,',
3940
f'{bottle} bottle{s1} of beer,',
4041
f'Take one down, pass it around,',
41-
f'{next_bottle} bottle{s2} of beer on the wall!',
42+
f'{num_next} bottle{s2} of beer on the wall!',
4243
])
4344

4445

Collapse file

‎bottles_of_beer/mk-sums.sh‎

Copy file name to clipboard
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
PRG='./bottles.py'
4+
5+
if [[ ! -f "$PRG" ]]; then
6+
echo "Missing \"$PRG\""
7+
exit 1
8+
fi
9+
10+
for i in $(seq 1 5); do
11+
printf "%s\t%s\n" $i $($PRG -n $i | md5)
12+
done
Collapse file

‎bottles_of_beer/sums.txt‎

Copy file name to clipboard
+5-200Lines changed: 5 additions & 200 deletions
Original file line numberDiff line numberDiff line change
@@ -1,200 +1,5 @@
1-
1 400f5b20fa60254d205090b4ef91bdbe
2-
2 a496bb46c8a639fdcd85ef8ad0f7d174
3-
3 181f40d60c8f71302f476664bf62059c
4-
4 83b94afd1e24fc63da5bd81106e14b94
5-
5 0b15f0f6a149084362c749ebe7a83aed
6-
6 275cfd9d5ff8d8deb58e5ba685133155
7-
7 a3b9e8af4465f05eafd3bd4aa0e4952a
8-
8 c9950e8da07ec46904b15b7d63272abd
9-
9 19ecc219b04d069d0349189169eb549b
10-
10 a85e3303e7763292fa91d8662fbb87e1
11-
11 b3552e26c708ee0ff07e6c2149bb852a
12-
12 523726405a7f6b41df5aac964e5388a0
13-
13 17e207498fad9a48618f791f25ed2e81
14-
14 c7006207ce7bbb88dde5b3cb28c25fff
15-
15 06afbf1ed843bedb1008fb11e7895486
16-
16 1a5be45a2478aed9e24a3802ae739118
17-
17 b934d5caf18dbecdbfec2bebf6ec8afc
18-
18 aec6b78c63821f0829296528de474531
19-
19 0fe72517a212e2aa4dd64fc5a0baf492
20-
20 4d3dcaaa936515a1d0924151d5cf12b8
21-
21 1fb86a40173752980cd8635152ef75c2
22-
22 a8e41553b7c4141014579985c1bd2204
23-
23 c5fb8a3cffdb662da6c95d6d8b6b6d74
24-
24 6404f8aa2b61816ea1d9967a32523935
25-
25 672c0d4b1d0735ec8e81820d069c4ffc
26-
26 e29b2606d9e86313b27f44d62e890616
27-
27 6ffbacce9cf57249cb6f7a0a4d7977bc
28-
28 fcfaeb14deece8ac20e71210bebca236
29-
29 bfc4a87bb4bd77799a5a7db803df9705
30-
30 102e8b25951e01d4ad684b7bd08fe6bb
31-
31 221ef70535fc22d538d3fcbba28e158e
32-
32 47340fec781178242ea2c63003300695
33-
33 925aea5d952e39805f2b7f9542a1b942
34-
34 bfc6339869dbea9405de8f9c4241f059
35-
35 ddcec3890a162e10b52a0a698992cec5
36-
36 d907127bbaf843f998366e722b45ffdf
37-
37 a149936782ad03d7cf2ed6ec0c4616ac
38-
38 70a1d3a5d2e9c9e71bbed071bba0ae7f
39-
39 0dad5acf3712488b82182118f1e1e589
40-
40 1865da6fcf872858f532c282953d1fb6
41-
41 cb5e3e3d7d4a4943144334af0bf5c11a
42-
42 65af4dec8a4fd5d073b11a56c39a9997
43-
43 75c0c622187f313c62e7ec3137287efe
44-
44 a46925ac853d69cd830d7eb6c916dc0f
45-
45 c9b967008ba68b6bdc59993836383df0
46-
46 d2af6f343c3304c248f0aa7ba4416d2c
47-
47 979d7b07231867497b82b0777ce44827
48-
48 496ea9d2a0663c12a17b68a7bd222266
49-
49 d9b1da8df5e19f3a151524add1468967
50-
50 1745fa1cf703a21f935c94385e8b13f0
51-
51 fd6e698f58d262afaa0195d362de440e
52-
52 0cd7ac7f95c613ccd9ac6f142a9ac73c
53-
53 3a2c56f8c50ab68ee430a9242b0aca34
54-
54 58d08c54de4debd53f94094e5e89fa54
55-
55 79a50b522a453046ee725038a49cacc2
56-
56 84f83b87719521d4555a150d50570ab1
57-
57 9a6e51984389aff7242cbf1a1b0668e4
58-
58 a020de9ef97a44aebdf5dc6f25a71b10
59-
59 4c42e6bf5ccbde2b0a7bb2fcbc97f5a8
60-
60 d17d826e60f046cb699a99a91a603c1d
61-
61 e2c8bf97f03f5f4052dc8418b1159ae5
62-
62 c51464b5f8c808a68bb00538e42b4c2c
63-
63 03c4d36a389d66ae476240b39cefb360
64-
64 cd056e4fb2b97323631d1908fb6188b5
65-
65 91dd82a3b9ffa6399527cc0de73cc223
66-
66 8348fbfd0e48d51169de30e2dcca59ad
67-
67 1b53bbbb8dce939bf496cac5b641efdb
68-
68 84f55ce16ec32185f971b2a55f79c287
69-
69 2037eef9bca6000482c79be961fbb167
70-
70 e806faf07003a2f997127f9f7cc8d938
71-
71 37024d12dc4587fec5fff8d56ff72ce1
72-
72 782a39739e3b9ed062c204bbb3a96540
73-
73 77fd52187cdaffdaf026d5bfd40eeb9b
74-
74 3567993b0fa70533eea9cfec15c124b6
75-
75 31897d7a839a05cb2f1e9d4d64732a6b
76-
76 d471773ecd8a50e130fecabcf7f7ba10
77-
77 29584f9b3aee9f093b9370ddf0b23f28
78-
78 5e851e137f8c95f61445b4cea3b6dc4b
79-
79 150b3d638d01471e9bd5bf7c9ae31f37
80-
80 8ac684a5e8703a96c9d4268967f8b9e1
81-
81 a4c11825ab91b370a985b9c6a34f94ae
82-
82 779c256b1557c906b425169fe07fec30
83-
83 6d4cd5244f7d9eb75892028bca1bccb5
84-
84 59e0322b51a5e8d64e6f1dee29e33758
85-
85 02761b476f08d4731433b41c3368e6f7
86-
86 6a2fdf62e020c3e75d944d53038ef143
87-
87 1d0f69a66db56767ea3991572668d8dd
88-
88 634ae0dbfca2d3b176fff9894b538e27
89-
89 fa43406641baa5232d67bf873b4a5e52
90-
90 8c6e7856ff7b8a35d8a6288ce8745f34
91-
91 45ea45cad3515647f9dee42bbd954384
92-
92 c962b1ab666fe2d7ef84fec8110cc285
93-
93 fe582fd1d07ea727dfbbbdfb59324df4
94-
94 b64321181a28610e5f1c25e6ee328af5
95-
95 5a322ff931603b3eeb2ba73e011f98ca
96-
96 7189627d078d4e9ddd9dd42d7f6b3c8d
97-
97 4134f9af472cc6b10e3bb0d00ecebb21
98-
98 c6224ce94c7fd62df8e0e30c6f6de362
99-
99 cbfa27edb514dc1dd1434ab00a2e1313
100-
100 4136f3ca8694ccfa66edd79013e5cdff
101-
1 81b7404501ba0661955ef3d260c78fb3
102-
2 053b764707c66b8b8a2bead8f5ad0c34
103-
3 ff6ed91ea757c0cb0aac3dc0c7ef69b9
104-
4 eee654f77f7a8941fc19bdbc6daecd2d
105-
5 0f691d36b53efac374c8365c5c576503
106-
6 a6e192406819c075828e34ef781219db
107-
7 5fc94b0516a7943a534717b95ac8ce23
108-
8 ec2e3bbcf68b2c7afb2a14eca2fdf74a
109-
9 3a709e8dfb31fdca089379db362c9d7a
110-
10 c0a1430fed729832fcd87c1608a7b763
111-
11 ee7765f4ce4aad8bb851065d80c7ddd0
112-
12 86b5ea5dcc58c0b4e93b489fedfdc108
113-
13 3c6dc613c34c0d30f176702b1d4d8427
114-
14 5c66da50b3e6ae586529094c95efb175
115-
15 d17f301b48e95a30d8155827d993892a
116-
16 f875670f9af770d0a7c7836f94f0c9f2
117-
17 64727ddf8febba37763b0cdff04a1170
118-
18 d6d3c1be37d1c8e048d71322189522d0
119-
19 e3f1102829655fd3e3b3df366e3832bd
120-
20 dd41a7e0a0a5ab435735791e96f528d0
121-
21 1c75c9ebec65f54b8f3ab76071b50608
122-
22 c1d3b57e443369f732918c00a8a0210b
123-
23 a8cb88124c5856d373ee7c9590677451
124-
24 ac40901f656247b1c7ef4f613a578120
125-
25 3f9a45dde88d4ffcbfd14024c5ff1a6e
126-
26 f40eb955dd0f0ff10eb32fa197c42759
127-
27 c73ae9a1d087d31ee06777f0e22e4cf2
128-
28 bbfd10f4725a1b989752d6223becd7eb
129-
29 5c4c119721bba3244220ab98d89c42fc
130-
30 ae8c35bf9686243e43d3ddfbf22b2230
131-
31 2ea3604cb604700b4c32558cf7b51dc6
132-
32 9088d1b98ef5ff2544e638b3043b1fc5
133-
33 1a8b8f485a25d4aeeacbe1aadad1df17
134-
34 35709a7c26372f2324706d81c86d3519
135-
35 0d4110575e6e717f961235342096dfb6
136-
36 32eb910cfab69820fd08e76cee9b15b5
137-
37 31b6f80baa624aadc588ac365f77fe68
138-
38 24d9eaa0b190d69b543289f8cbe4d2e4
139-
39 12d5960f2442def8c2daa3fa91c96675
140-
40 071dffac6eebfe528baa1aec17b905be
141-
41 56ce26c3ee3237fa27cd0ef5ed4d0bdc
142-
42 0fa6187e511274db8817fa30049a978d
143-
43 7f011a83332e706d7851adc614457ad9
144-
44 0546d326400f70a729b1f35bdd032f05
145-
45 dc466cef3e9b5e6410d2eadcdd0778a8
146-
46 addfe04c97ef72484da2ee16fb485543
147-
47 7fe33cb9daa82e3e5355b9957f52b371
148-
48 e2434fa971f98c660d0e85a589565528
149-
49 fc0782a4bbee8a144dd5b5204c354c1a
150-
50 23f1330f5214f68c036bff0deaacd31c
151-
51 c3f36d26a4a5588cc01620b4ed5e4b35
152-
52 e731f7dc30bd0c2dcd869dd2164f159f
153-
53 4f077105d9ab9a803aaf1ed0c6d93dda
154-
54 aa9cb0734dded8d3c7f8007cf570a974
155-
55 06dce0a215e6cb11911a87b0c8dcc663
156-
56 a6c2c4e99643c95597a30107e19493d0
157-
57 31278a0787d5f07283e4d7bbb8b7d99e
158-
58 65763f8a0429fed69635d627f5a5d091
159-
59 550446a44f8361d30bb30dcc18ec4a00
160-
60 9240420090549805e98f32518decf4da
161-
61 1f162a9429a620d55c0edea7bafa81f1
162-
62 1129eb8c6599f588fefd8e4341277ba5
163-
63 540256a45dacad58b7341119ca25952e
164-
64 21ce1f1a4ac0b49cec6f6f94a0e22f56
165-
65 852e65143d6d43055df0853e044242dd
166-
66 fad03b6d01cb354df96ba451691472f6
167-
67 1860af56c4c08f5c6b8d2f17aecf70e7
168-
68 99408988ebf151cbf3873d5ec6c6d929
169-
69 b1c47c0c4d3485967beecad5d6f4e61d
170-
70 35b73f9c3c9b555531d24652adaf21a5
171-
71 033e8693c3ee7461b577fcd3bb5cbf17
172-
72 3c5ffc34699ebe85ddb039e3491f10f6
173-
73 834b8e2942d48548f99c069136946131
174-
74 8f76862ce982835d2fc3e2899d0697fd
175-
75 8c94ada9645c1d7ff3912f8a77e8d296
176-
76 dab92a7596cba501b5ecfaeb312c0c47
177-
77 6d6809a2ef36ae80b6a8d8a027da9865
178-
78 8f5a0d3e55fb99f2048a0f5e498eb6f5
179-
79 c407229777d335355d8502a2e9d2282f
180-
80 45cbe9b3c7e48b86839cb3fb32e6302a
181-
81 d08b1e4951beb085c678c314287954a0
182-
82 cec67c4f7da778693428de4dcd8f56b2
183-
83 b7beeb7156c42bb86216afdff7221595
184-
84 6dd20cecf4ff7c48914608c757a52e84
185-
85 64436fbef9e670ef3e1f06a9f9e5d53e
186-
86 1f262f68657d04c5c1de39fab376fee9
187-
87 77788b55281d6c9bf7a682fd3ea0afd0
188-
88 0fda7ff059a184076834345d942bed55
189-
89 6d5a9e055de3561756a8a0e4349afec1
190-
90 150d8f1c61ae7eb9ff547671753ed7ed
191-
91 f96a7e3753c04d7f604458635499d5e1
192-
92 beaa7cbd0d7f4b96d921e7b1f80f3174
193-
93 e3d2381cd0aa2a61aa63740b8735662f
194-
94 17c57d7d373d348fb7f4d544614299f5
195-
95 3a4241f751fce81b42321e3e481a4e26
196-
96 a9974051f884d80b47293f36a827f973
197-
97 8ce2ea52277da6d2b2eec61818f0bf05
198-
98 8e914eb03ea11c9f309341de0abf67ac
199-
99 1d26c07c3212c502d131c38cead7d020
200-
100 71fd6277e569c6c9e1f4e56d6b10ee08
1+
1 e5a9180dbf116634031d3e6ba3054c38
2+
2 01b5e85d0b044b3498a2922751631e02
3+
3 c4b6bc58616c6e0e6d33b817a528539b
4+
4 ec0681aacccd41959573e0746194f204
5+
5 65af93070aac7346b814e1e2c9b050e6
Collapse file

‎bottles_of_beer/test.py‎

Copy file name to clipboardExpand all lines: bottles_of_beer/test.py
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def test_one():
6161
expected = ('1 bottle of beer on the wall,\n'
6262
'1 bottle of beer,\n'
6363
'Take one down, pass it around,\n'
64-
'0 bottles of beer on the wall!')
64+
'No more bottles of beer on the wall!')
6565

6666
rv, out = getstatusoutput('{} --num 1'.format(prg))
6767
assert rv == 0
@@ -79,7 +79,7 @@ def test_two():
7979
'1 bottle of beer on the wall,\n'
8080
'1 bottle of beer,\n'
8181
'Take one down, pass it around,\n'
82-
'0 bottles of beer on the wall!')
82+
'No more bottles of beer on the wall!')
8383

8484
rv, out = getstatusoutput('{} -n 2'.format(prg))
8585
assert rv == 0
Collapse file

‎circle/circle_area.py‎

Copy file name to clipboard
+52Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/usr/bin/env python3
2+
"""Calculate area of a circle"""
3+
4+
import argparse
5+
import os
6+
import sys
7+
from math import pi
8+
9+
10+
# --------------------------------------------------
11+
def get_args():
12+
"""Get command-line arguments"""
13+
14+
parser = argparse.ArgumentParser(
15+
description='Argparse Python script',
16+
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
17+
18+
parser.add_argument('-r',
19+
'--radius',
20+
help='Circle radius',
21+
metavar='float',
22+
type=float,
23+
default=0.)
24+
25+
parser.add_argument('-d',
26+
'--diameter',
27+
help='Circle diameter',
28+
metavar='float',
29+
type=float,
30+
default=0.)
31+
32+
args = parser.parse_args()
33+
34+
if all(map(lambda v: not v, [args.radius, args.diameter])) or all(
35+
[args.radius, args.diameter]):
36+
parser.error('Must choose one of --radius or --diameter')
37+
38+
return args
39+
40+
41+
# --------------------------------------------------
42+
def main():
43+
"""Make a jazz noise here"""
44+
45+
args = get_args()
46+
radius = args.radius or args.diameter / 2
47+
print(f'Area = {2 * pi * radius}')
48+
49+
50+
# --------------------------------------------------
51+
if __name__ == '__main__':
52+
main()
Collapse file

‎family_tree/joanie.txt.gv.pdf‎

Copy file name to clipboard
10.2 KB
Binary file not shown.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.