Skip to content

Instantly share code, notes, and snippets.

@bradmontgomery
Created February 4, 2019 22:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bradmontgomery/41fb767ef5910913f159ffaa2de91353 to your computer and use it in GitHub Desktop.
Save bradmontgomery/41fb767ef5910913f159ffaa2de91353 to your computer and use it in GitHub Desktop.
A function to enumerate and print a list of items horizontally using the space available in your terminal (optionally, without wrapping text).
"""
A function to enumerate and print a list of items horizontally using the
space available in your terminal (optionally, without wrapping text).
Example:
>>> friendly.test()
1. a cat 2. a dog 3. Three pairs of socks 4. A kick-ass bicycle
5. chickens 6. A quick brown fox 7. and a lazy dog
8. Lorem ipsum dolor sit amet, consectetur
"""
import os
def pretty_print(items, truncate=False):
cols = os.get_terminal_size().columns
output = ''
for n, item in enumerate(items):
n = n + 1
item = f"{n}. {item} "
if len(item) + len(output) <= cols:
output += item
else:
if truncate:
output = output[:cols]
print(output)
output = item
def test():
items = [
'a cat',
'a bird',
'Three pairs of socks',
'A sweet bicycle',
'chickens',
'A quick brown fox',
'and a lazy dog',
'Lorem ipsum dolor sit amet, consectetur',
'adipiscing elit. Phasellus fringilla sollicitudin ultrices',
'Curabitur eu faucibus ante, ac sagittis nisl. Pellentesque habitant',
'morbi tristique senectus et netus et malesuada fames ac',
'turpis egestas',
'Nulla efficitur enim sed',
'mi semper suscipit',
'Fusce vulputate',
'augue eu convallis suscipit',
'ex nibh vulputate est',
'non dapibus turpis arcu id quam',
'Curabitur condimentum est nibh',
'ac condimentum tellus congue vehicula',
'Vivamus non eleifend nisi',
'Nam in dui in nisl sollicitudin ultricies non ac augue',
'Aliquam ultricies hendrerit rhoncus',
'Nullam hendrerit quam ac orci interdum consequat',
'Duis commodo a enim ac accumsan',
'Maecenas eu pharetra enim id congue ante',
'Phasellus quis eleifend nulla, sit amet porta metus',
]
pretty_print(items, truncate=True)
def test2(min_len=4, max_len=14, num_words=100):
from string import ascii_letters
from random import sample, randint
items = [''.join(sample(ascii_letters, randint(min_len, max_len))) for _ in range(num_words)]
pretty_print(items)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment