fixed the issue in strings/join.py (#12434)

* fixed the issue in strings/join.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update join.py

* Update join.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Maxim Smolskiy <mithridatus@mail.ru>
This commit is contained in:
RajdeepBakolia2004 2024-12-29 19:05:33 +05:30 committed by GitHub
parent 2d68bb50e5
commit 972a5c1e43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -24,6 +24,8 @@ def join(separator: str, separated: list[str]) -> str:
'a' 'a'
>>> join(" ", ["You", "are", "amazing!"]) >>> join(" ", ["You", "are", "amazing!"])
'You are amazing!' 'You are amazing!'
>>> join(",", ["", "", ""])
',,'
This example should raise an This example should raise an
exception for non-string elements: exception for non-string elements:
@ -37,15 +39,33 @@ def join(separator: str, separated: list[str]) -> str:
'apple-banana-cherry' 'apple-banana-cherry'
""" """
joined = "" # Check that all elements are strings
for word_or_phrase in separated: for word_or_phrase in separated:
# If the element is not a string, raise an exception
if not isinstance(word_or_phrase, str): if not isinstance(word_or_phrase, str):
raise Exception("join() accepts only strings") raise Exception("join() accepts only strings")
joined: str = ""
"""
The last element of the list is not followed by the separator.
So, we need to iterate through the list and join each element
with the separator except the last element.
"""
last_index: int = len(separated) - 1
"""
Iterate through the list and join each element with the separator.
Except the last element, all other elements are followed by the separator.
"""
for word_or_phrase in separated[:last_index]:
# join the element with the separator.
joined += word_or_phrase + separator joined += word_or_phrase + separator
# Remove the trailing separator # If the list is not empty, join the last element.
# by stripping it from the result if separated != []:
return joined.strip(separator) joined += separated[last_index]
# Return the joined string.
return joined
if __name__ == "__main__": if __name__ == "__main__":