Oct-15-2019, 10:48 AM
(This post was last modified: Oct-15-2019, 10:51 AM by newbieAuggie2019.)
(Oct-15-2019, 10:00 AM)buran Wrote:def print_nicely(iterable): iterable = list(map(str, iterable)) if len(iterable) > 1: print(f"'{', '.join(iterable[:-1])} and {iterable[-1]}'") elif len(iterable) == 1: print(f"'{iterable[0]}'") else: raise ValueError('Expecting non-empty iterable') print_nicely(['apples', 'bananas', 'tofu', 'cats']) # print list print_nicely(['bird']) # print single element list print_nicely(range(4)) # print range object print_nicely([])by the way i may have seen a package on PyPI that does it but cannot find it at the moment
Output:'apples, bananas, tofu and cats' 'bird' '0, 1, 2 and 3' Traceback (most recent call last): File "***", line 13, in <module> print_nicely([]) File "***", line 8, in print_nicely raise ValueError('Expecting non-empty iterable') ValueError: Expecting non-empty iterable
Thanks a lot!
Although I like your creative way of thinking, in this case, you have transformed the 4 lines I wanted to simplify, using f-strings:
def commaCode(list1): print("'", end='') print(*list1[:-1], sep=', ', end=",") print(' and', list1[-1], end=".'\n\n")into actually 8 lines of code (maybe 6 if we eliminate the last 2 lines):
def print_nicely(iterable): iterable = list(map(str, iterable)) if len(iterable) > 1: print(f"'{', '.join(iterable[:-1])} and {iterable[-1]}'") elif len(iterable) == 1: print(f"'{iterable[0]}'") else: raise ValueError('Expecting non-empty iterable')I think that as I don't know about 'map()', I prefer Perfringo's one liner in this case, but I have not sorted out the problem with the numerical list yet.
Thanks and all the best,
(Oct-15-2019, 10:37 AM)buran Wrote: I found it
https://github.com/jazzband/inflect
import inflect p = inflect.engine() print(p.join(['apples', 'bananas', 'tofu', 'cats'])) # print list print(p.join(['bird'])) # print single element list print(p.join(list(map(str, range(4))))) # print range object print(p.join([]))
Output:apples, bananas, tofu, and cats bird 0, 1, 2, and 3
Thanks a lot!
That looks to me much clearer than the other one.
Thanks and all the best,
newbieAuggie2019
"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs
"That's been one of my mantras - focus and simplicity. Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple. But it's worth it in the end because once you get there, you can move mountains."
Steve Jobs