Can you fix the loop issues? 
import pygame
import sys

# Set up display
screen = pygame.display.set_mode((900, 700))

# Set the Kirby pink color (RGB format)
kirby_pink_color = (255, 105, 180)
ground_color = (0, 255, 0) # Green color for the ground

# Circle properties
circle_radius = 25 # Initial radius
circle_y_offset = 25 # Offset from the top of the circle

# Circle position and velocity
circle_x, circle_y = 425, 500
circle_x_speed, circle_y_speed = 0, 0
gravity = 1
jump_height = -15 # Set jump height

# Variables for crouching and in-air state
is_crouching = False
crouch_scale = 0.5 # Scale factor for crouching
in_air = False

# Movement flags
is_moving_left = False
is_moving_right = False
is_floating = False

# Load the Kirby face image
kirby_face = pygame.image.load("kirby_face.png")

# Second Kirby variables
circle_x2, circle_y2 = 450, 500
circle_x_speed2, circle_y_speed2 = 0, 0

# Game loop
while True:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      pygame.quit()
      sys.exit()
    elif event.type == pygame.KEYDOWN:
      if event.key == pygame.K_s and not is_crouching:
        is_crouching = True
    elif event.type == pygame.K_w and not in_air:
      circle_y_speed = jump_height
      in_air = True
    elif event.type == pygame.K_e and not is_crouching:
      is_floating = True
    elif event.type == pygame.K_r:
      is_floating = False
    elif event.type == pygame.K_a:
      is_moving_left = True
    elif event.type == pygame.K_d:
      is_moving_right = True
    elif event.type == pygame.K_i and not is_crouching:
      is_crouching2 = True
    elif event.type == pygame.K_o and not in_air:
      circle_y_speed2 = jump_height
      in_air = True
    elif event.type == pygame.K_p and not is_crouching:
      is_floating2 = True
    elif event.type == pygame.K_j:
      is_moving_left2 = True
    elif event.type == pygame.K_l:
      is_moving_right2 = True
    elif event.type == pygame.KEYUP:
      if event.type == pygame.K_s:
        is_crouching = False
    elif event.type == pygame.K_a:
      is_moving_left = False
    elif event.type == pygame.K_d:
      is_moving_right = False
    elif event.type == pygame.K_i:
      is_crouching2 = False
    elif event.type == pygame.K_j:
      is_moving_left2 = False
    elif event.type == pygame.K_l:
      is_moving_right2 = False

# Floating set up
  if is_floating:
    gravity = 0.3
    jump_height = -6.5
    in_air = False
    is_crouching = False
    circle_radius = 35
    circle_y_offset = 35
  else:
    gravity = 1
    jump_height = -15
    in_air = True
    circle_radius = 25
    circle_y_offset = 25

# Apply gravity
  circle_y_speed += gravity

# Apply horizontal motion
  if is_moving_left:
    circle_x_speed = -5
  elif is_moving_right:
    circle_x_speed = 5
  else:
    circle_x_speed = 0

# Update circle position
  circle_x += circle_x_speed
  circle_y += circle_y_speed

# Collision with the ground
  if circle_y + circle_radius >= 575:
    circle_y = 575 - circle_radius
    circle_y_speed = 0
    gravity = 1
    jump_height = -15
    is_floating = False
    in_air = False # Circle is on the ground

# Collision with the sides of the screen
    if circle_x < 0:
      circle_x = 0
    elif circle_x > 900 - 2 * circle_radius:
      circle_x = 900 - 2 * circle_radius

# Update second circle position
    circle_x2 += circle_x_speed2
    circle_y2 += circle_y_speed2

# Draw background
  screen.fill((100, 100, 255)) # Blue background

# Draw ground
  pygame.draw.rect(screen, ground_color, (0, 600, 900, 50))

# Draw Kirby pink sphere (circle)
  if is_crouching:
    pygame.draw.ellipse(screen, kirby_pink_color,
    (int(circle_x),
    int(circle_y + circle_radius * (1.6 - crouch_scale)),
    int(2 * circle_radius),
    int(crouch_scale * 2 * circle_radius)))
# Scale and draw the Kirby face when crouching
  kirby_face_scaled = pygame.transform.scale(kirby_face, (int(2 * circle_radius), int(2 * circle_radius * crouch_scale)))
  screen.blit(kirby_face_scaled, (int(circle_x), int(circle_y + circle_radius * (1.6 - crouch_scale))))
else:
  pygame.draw.circle(screen, kirby_pink_color,
  (int(circle_x + circle_radius), int(circle_y + circle_radius)),
  circle_radius)
# Scale and draw the Kirby face when not crouching
  kirby_face_scaled = pygame.transform.scale(kirby_face, (int(2 * circle_radius), int(1.8 * circle_radius)))
  screen.blit(kirby_face_scaled, (int(circle_x), int(circle_y)))

# Draw second Kirby pink sphere (circle)
  if is_crouching2:
  pygame.draw.ellipse(screen, kirby_pink_color,
    (int(circle_x2),
    int(circle_y2 + circle_radius * (1.6 - crouch_scale)),
    int(2 * circle_radius),
    int(crouch_scale * 2 * circle_radius)))
# Scale and draw the second Kirby face when crouching
    kirby_face_scaled = pygame.transform.scale(kirby_face, (int(2 * circle_radius), int(2 * circle_radius * crouch_scale)))
    screen.blit(kirby_face_scaled, (int(circle_x2), int(circle_y2 + circle_radius * (1.6 - crouch_scale))))
  else:
    pygame.draw.circle(screen, kirby_pink_color,
    (int(circle_x2 + circle_radius), int(circle_y2 + circle_radius)),
    circle_radius)
# Scale and draw the second Kirby face when not crouching
  kirby_face_scaled = pygame.transform.scale(kirby_face, (int(2 * circle_radius), int(1.8 * circle_radius)))
  screen.blit(kirby_face_scaled, (int(circle_x2), int(circle_y2)))

# Update the display
  pygame.display.flip()

# Cap the frame rate
  pygame.time.Clock().tick(60)