import string


UPPER = string.ascii_uppercase
LOWER = string.ascii_lowercase


def rotate(s, n):
    return "".join(rot_gen(s,n))


def shift_rules(n):
    shifted = UPPER[n:] + UPPER[:n] + LOWER[n:] + LOWER[:n]
    return {k:v for k,v in zip(UPPER+LOWER, shifted)}


def rot_gen(s, n):
    rules = shift_rules(n)
    for ch in s:
        try:
            yield rules[ch]
        except KeyError:
            yield ch

import string


UPPER = string.ascii_uppercase
LOWER = string.ascii_lowercase


def rotate(s, n):
    rules = shift_rules(n)
    return "".join(map(lambda k: rules.get(k, k), s))


def shift_rules(n):
    shifted = UPPER[n:] + UPPER[:n] + LOWER[n:] + LOWER[:n]
    return {k:v for k,v in zip(UPPER+LOWER, shifted)}

Use lambda function with method
Use lambda function with  method

  import string
  
  
  UPPER = string.ascii_uppercase
  LOWER = string.ascii_lowercase
  
  
  def rotate(s, n):
-     return "".join(rot_gen(s,n))
+     rules = shift_rules(n)
+     return "".join(map(lambda k: rules.get(k, k), s))
  
  
  def shift_rules(n):
      shifted = UPPER[n:] + UPPER[:n] + LOWER[n:] + LOWER[:n]
      return {k:v for k,v in zip(UPPER+LOWER, shifted)}
  
- 
- def rot_gen(s, n):
-     rules = shift_rules(n)
-     for ch in s:
-         try:
-             yield rules[ch]
-         except KeyError:
-             yield ch
- 
Use lambda function with method
## Code Before:
import string


UPPER = string.ascii_uppercase
LOWER = string.ascii_lowercase


def rotate(s, n):
    return "".join(rot_gen(s,n))


def shift_rules(n):
    shifted = UPPER[n:] + UPPER[:n] + LOWER[n:] + LOWER[:n]
    return {k:v for k,v in zip(UPPER+LOWER, shifted)}


def rot_gen(s, n):
    rules = shift_rules(n)
    for ch in s:
        try:
            yield rules[ch]
        except KeyError:
            yield ch

## Instruction:
Use lambda function with method
## Code After:
import string


UPPER = string.ascii_uppercase
LOWER = string.ascii_lowercase


def rotate(s, n):
    rules = shift_rules(n)
    return "".join(map(lambda k: rules.get(k, k), s))


def shift_rules(n):
    shifted = UPPER[n:] + UPPER[:n] + LOWER[n:] + LOWER[:n]
    return {k:v for k,v in zip(UPPER+LOWER, shifted)}
