Mercurial > louis > peeves
annotate arrays/word_count/wc.py @ 0:20fea762903e
Import some exercises and solutions
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Sat, 29 Jun 2013 19:30:31 -0700 |
parents | |
children |
rev | line source |
---|---|
0
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
2 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
3 def wc(buf): |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
4 word_count = 0 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
5 line_count = 0 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
6 i = 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
7 n = len(buf) |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
8 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
9 while i < n and buf[i].isspace(): |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
10 if buf[i] == "\n": |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
11 line_count += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
12 i += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
13 while i < n - 1: |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
14 if not buf[i - 1].isspace() and buf[i].isspace(): |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
15 word_count += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
16 while i < n - 1 and buf[i].isspace(): |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
17 if buf[i] == "\n": |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
18 line_count += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
19 i += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
20 else: |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
21 i += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
22 if not buf[i].isspace(): |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
23 word_count += 1 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
24 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
25 return word_count, line_count |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
26 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
27 s1 = "rhje rhesr jrelskj " |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
28 s2 = "fjesl\n ffjesl jfes \n\nfjles fls\n \n" |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
29 s3 = " fjeksl fjkels ff" |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
30 |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
31 print("wc({0}) = {1}".format(s1, wc(s1))) |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
32 print("wc({0}) = {1}".format(s3, wc(s3))) |
20fea762903e
Import some exercises and solutions
Louis Opter <kalessin@kalessin.fr>
parents:
diff
changeset
|
33 print("wc({0}) = {1}".format(s2.replace("\n", "\\n"), wc(s2))) |