Skip to content

Instantly share code, notes, and snippets.

View ramalho's full-sized avatar
🏠
Working from home

Luciano Ramalho ramalho

🏠
Working from home
View GitHub Profile
@ramalho
ramalho / windows.txt
Created July 12, 2021 14:53
Python's banners
C:\Users\luciano>python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
pessoas = [
{'nome': 'Ana', 'peso': 65.2},
{'nome': 'Juca', 'peso': 89.1},
{'nome': 'Carla', 'peso': 58.3}
]
for pessoa in pessoas:
nome = pessoa['nome']
peso = pessoa['peso']
print(f'{nome:10} {peso:.1f}')
@ramalho
ramalho / table.txt
Created June 17, 2020 02:25
Strange number protocols
builtins numpy builtins numpy decimal fractions builtins numpy
complex complex64 float float16 Decimal Fraction int uint8
----------------------------------------------------------------------------------------------
numbers.Number • • • • • • • •
----------------------------------------------------------------------------------------------
numbers.Complex • • • • • • •
SupportsComplex • • •
complex(x) (1+0j) (1+0j) (1+0j) (1+0j) (1+0j) (1+0j) (1+0j) (1+0j)
----------------------------------------------------------------------------------------------
numbers.Real • • • • •
@ramalho
ramalho / mymax.py
Last active May 26, 2020 19:17
Python `max()` clone, with type hints in 6 overloads
from typing import Protocol, Any, TypeVar, overload, Callable, Iterable, Union
class Comparable(Protocol):
def __lt__(self, other: Any) -> bool:
...
MISSING = object()
EMPTY_MSG = 'max() arg is an empty sequence'
@ramalho
ramalho / charindex.py
Created May 8, 2020 07:20
Functions to create an inverted index to find Unicode characters by name
"""
``char_index`` builds an inverted index mapping words to sets of Unicode
characters which contain that word in their names. For example::
>>> index = char_index(32, 65)
>>> sorted(index['SIGN'])
['#', '$', '%', '+', '<', '=', '>']
>>> sorted(index['DIGIT'])
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> index['DIGIT'] & index['EIGHT']
from random import shuffle
from typing import Sequence, List, Any
def sample(population: Sequence, size: int) -> List:
if size < 1:
raise ValueError('size must be >= 1')
result = list(population)
shuffle(result)
return result[:size]

Principles of Adult Behavior

  1. Be patient. No matter what.
  2. Don’t badmouth: Assign responsibility, not blame. Say nothing of another you wouldn’t say to him.
  3. Never assume the motives of others are, to them, less noble than yours are to you.
  4. Expand your sense of the possible.
  5. Don’t trouble yourself with matters you truly cannot change.
  6. Expect no more of anyone than you can deliver yourself.
  7. Tolerate ambiguity.
  8. Laugh at yourself frequently.
@ramalho
ramalho / parameterized_test.exs
Created May 14, 2019 01:34 — forked from damonkelley/parameterized_test.exs
Parameterized Tests in Elixir
defmodule ParamerizedTest do
use ExUnit.Case
@parameters [
{0, 0},
{1, 1},
{2, 4},
{3, 9},
]
@ramalho
ramalho / elide.py
Created July 24, 2019 08:36
elide: cut text at or before max_len, keeping complete words if possible
#!/usr/bin/env python3
def elide(text, max_len, ellipsis='…'):
if len(text) <= max_len:
return text
cut = max_len
while cut > 0 and text[cut - 1].isalnum():
cut -= 1
@ramalho
ramalho / faixa_limitada.py
Created March 6, 2019 22:10
Resposta entre dois valores
resposta = -1
while resposta < 0 or resposta > 150:
try:
resposta = int(input('Digite um valor entre 0 e 150: '))
except ValueError:
continue