code: def print_periodic_table(filter_function: callable = None):
          
          for row in range(1, 10):
              rowstr = []
              for group in range(1, 19):
                  try:
                      el = Element.from_row_and_group(row, group)
                  except ValueError:
                      el = None
                  if el and ((not filter_function) or filter_function(el)):
                      rowstr.append("{:3s}".format(el.symbol))
                  else:
                      rowstr.append("   ")
              print(" ".join(rowstr))
docs: A pretty ASCII printer for the periodic table, based on some
          filter_function.
  
          Args:
              filter_function: A filtering function taking an Element as input
                  and returning a boolean. For example, setting
                  filter_function = lambda el: el.X > 2 will print a periodic
                  table containing only elements with electronegativity > 2.