Skip to content

Commit b6a412e

Browse files
committed
Enhanced readability: added type hints, improved
docstrings, and ensured compliance with guidelines.
1 parent b8afb21 commit b6a412e

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

strings/anagrams.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import collections
44
import pprint
55
from pathlib import Path
6+
from typing import List
67

78

89
def signature(word: str) -> str:
9-
"""Return a word sorted
10+
"""
11+
Return a word sorted by its letters.
12+
1013
>>> signature("test")
1114
'estt'
1215
>>> signature("this is a test")
@@ -17,16 +20,18 @@ def signature(word: str) -> str:
1720
return "".join(sorted(word))
1821

1922

20-
def anagram(my_word: str) -> list[str]:
21-
"""Return every anagram of the given word
23+
def anagram(my_word: str) -> List[str]:
24+
"""
25+
Return every anagram of the given word.
26+
2227
>>> anagram('test')
2328
['sett', 'stet', 'test']
2429
>>> anagram('this is a test')
2530
[]
2631
>>> anagram('final')
2732
['final']
2833
"""
29-
return word_by_signature[signature(my_word)]
34+
return word_by_signature.get(signature(my_word), [])
3035

3136

3237
data: str = Path(__file__).parent.joinpath("words.txt").read_text(encoding="utf-8")
@@ -39,6 +44,6 @@ def anagram(my_word: str) -> list[str]:
3944
if __name__ == "__main__":
4045
all_anagrams = {word: anagram(word) for word in word_list if len(anagram(word)) > 1}
4146

42-
with open("anagrams.txt", "w") as file:
43-
file.write("all_anagrams = \n ")
47+
with open("anagrams.txt", "w", encoding="utf-8") as file:
48+
file.write("all_anagrams = \n")
4449
file.write(pprint.pformat(all_anagrams))

0 commit comments

Comments
 (0)