input: Write a function to print a formatted table of grades for a given set of students. Each student is represented as a dictionary with 'name' and 'grade' as keys. The table should adjust dynamically to the length of the longest student name.
  def print_grade_table(students):
      max_name_length = max(len(student['name']) for student in students)
      line_template = "{{name:<{max_name_length}}}   {{grade}}".format(max_name_length=max_name_length)
      header = line_template.format(name='Name', grade='Grade')
      sep = '-' * len(header)
      print(header)
      print(sep)
      for student in students:
          print(line_template.format(**student))
  assert print_grade_table([{"name": "John", "grade": 92}, {"name": "Alice", "grade": 95}, {"name": "Bob", "grade": 87}])==None
  assert print_grade_table([{"name": "Samantha", "grade": 88}, {"name": "Tom", "grade": 90}])==None
  assert print_grade_table([{"name": "Jennifer", "grade": 93}])==None
  assert print_grade_table([])==None
output: def print_grade_table(students):
      if not students:
          return
      max_name_length = max(len(student['name']) for student in students)
      line_template = "{{name:<{max_name_length}}}   {{grade}}".format(max_name_length=max_name_length)
      header = line_template.format(name='Name', grade='Grade')
      sep = '-' * len(header)
      print(header)
      print(sep)
      for student in students:
          print(line_template.format(**student))