Skip to content

fixes join.py and split.py action and requirements error #12438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Dec 29, 2024
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
beautifulsoup4
fake_useragent
fake-useragent
imageio
keras
lxml
Expand All @@ -11,7 +11,7 @@ pillow
requests
rich
scikit-learn
sphinx_pyproject
sphinx-pyproject
statsmodels
sympy
tweepy
Expand Down
50 changes: 24 additions & 26 deletions strings/join.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,49 @@
"""
Program to join a list of strings with a separator
"""


def join(separator: str, separated: list[str]) -> str:
"""
Joins a list of strings using a separator
and returns the result.
Custom implementation of the join() function.
This function manually concatenates the strings in the list,
using the provided separator, without relying on str.join().

:param separator: Separator to be used
for joining the strings.
:param separated: List of strings to be joined.
:param separator: The separator to place between strings.
:param separated: A list of strings to join.

:return: Joined string with the specified separator.
:return: A single string with elements joined by the separator.

Examples:
:raises Exception: If any element in the list is not a string.

Examples:
>>> join("", ["a", "b", "c", "d"])
'abcd'
Copy link

@Kaaserne Kaaserne Dec 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason these got removed? I've never used doctest before but I think this has something to do with testing. Maybe you can also add:

"""
>>> join(',', ['', '', ''])
',,'
"""

>>> join("#", ["a", "b", "c", "d"])
'a#b#c#d'
>>> join("#", "a")
'a'
>>> join("#", "a") # Single string instead of list
Traceback (most recent call last):
...
Exception: join() accepts only strings
>>> join(" ", ["You", "are", "amazing!"])
'You are amazing!'

This example should raise an
exception for non-string elements:
>>> join("#", ["a", "b", "c", 1])
Traceback (most recent call last):
...
Exception: join() accepts only strings

Additional test case with a different separator:
>>> join("-", ["apple", "banana", "cherry"])
'apple-banana-cherry'
>>> join(",", ["", "", ""])
',,'
"""

joined = ""
for word_or_phrase in separated:
result = ""
for i, word_or_phrase in enumerate(separated):
# Check if the element is a string
if not isinstance(word_or_phrase, str):
raise Exception("join() accepts only strings")
joined += word_or_phrase + separator

# Remove the trailing separator
# by stripping it from the result
return joined.strip(separator)
# Add the current word or phrase to the result
result += word_or_phrase
# Add the separator if it's not the last element
if i < len(separated) - 1:
result += separator

return result
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Kaaserne can you please review it?



if __name__ == "__main__":
Expand Down
Loading