I need jumping and gravity in my game. How should I implement this? This is what I have:
import pygame
# initialise pygame
pygame.init()
#variables
level = 0
velx = 0
vely = 0
health = 1
floor_group = set([])
clock = pygame.time.Clock()
#screen size the same size as my background
window = pygame.display.set_mode((900,563))
#Load Images: Backgrounds
background0 = pygame.image.load("background0.png").convert()
#Load Sprites
Spike = pygame.image.load("spike.png").convert_alpha()
spider = pygame.image.load("spider.png").convert_alpha()
backgrounddeath = pygame.image.load("backgrounddeath.png").convert_alpha()
#Window title
pygame.display.set_caption("I wanna be the Mario")
def detectCollisions(x1, y1, w1,h1, x2, y2, w2, h2):                #Collision
    if (x2 + w2 >= x1 >= x2 and y2 + h2 >= y1 >= y2):
        return True
    elif (x2 + w2 >= x1 + w1 >= x2 and y2 + h2 >= y1 >= y2):
        return True
    elif (x2 + w2 >= x1 >= x2 and y2 + h2 >= y1 + h1 >= y2):
        return True
    elif (x2 + w2 >= x1 + w1 >= x2 and y2 + h2 >= y1+ h1 >= y2):
        return True
    else:
        return False
# character class
class Sprite:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.width = 42
        self.height = 44
        self.velx = 0
        self.vely = 0
        self.image0 = pygame.image.load("char1.png")
        self.image1 = pygame.image.load("char2.png")
        self.timeTarget = 10
        self.timeNumber = 0
        self.currentImage = 0
    def update(self):
        self.timeNumber += 1
        if (self.timeNumber == self.timeTarget):
            if (self.currentImage == 0):
                self.currentImage = 1
            else:
                self.currentImage = 0
            self.timeNumber = 0
        self.render()
    def render(self):
        if (self.currentImage == 0):
            window.blit(self.image0, (self.x, self.y))
        else:
            window.blit(self.image1, (self.x, self.y))
# Floor class
class Floor:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.width = 43
        self.height = 44
        self.image0 = pygame.image.load("floor.png")
    def update(self):
        self.render()
    def render(self):
        window.blit(self.image0, (self.x, self.y))
def floor_spawner(row):
    global floor_group
    for i in range(0,946,43):
        floor_group.add(Floor(i,row))
#Create first level floor        
floor_spawner(519)
floor_spawner(475)
#player
player = Sprite(0,431)
#create our main loop
gameloop = True
while gameloop:
    for event in pygame.event.get():       #get function handles events
        if  (event.type == pygame.QUIT):   #if Quit (red x) pressed exit loop
            gameloop = False
        if (event.type == pygame.KEYDOWN):      #If a key is pressed down
            if (event.key ==pygame.K_LEFT):      #If Left Arrow
                velx = -7
            if (event.key ==pygame.K_RIGHT):     #If Right Arrow
                velx = 7
            if (event.key ==pygame.K_UP):        #If Up Arrow
                vely = -7
            if (event.key ==pygame.K_DOWN):      #If Down Arrow
                vely = 7
        if (event.type == pygame.KEYUP):      #If a key is pressed down
            if (event.key ==pygame.K_LEFT):      #If Left Arrow
                velx = 0
            if (event.key ==pygame.K_RIGHT):     #If Right Arrow
                velx = 0
            if (event.key ==pygame.K_UP):        #If Up Arrow
                vely = 0
            if (event.key ==pygame.K_DOWN):      #If Down Arrow
                vely = 0
    #Death screen
    if health == 0:
        level =5
    if level == 5:
        window.blit(backgrounddeath, (0,0))
        pygame.mixer.music.load('Death.OGG')
        pygame.mixer.music.play(0)
    #Level 0
    if level == 0:
        window.blit(background0, (0,0))    #Bottom bricks
        for f in list(floor_group):
            if detectCollisions(player.x, player.y, player.width, player.height, f.x, f.y, f.width, f.height):
                vely = 0
            f.render()
        if player.x <= 0:                      #Left side collision
            player.x = 0
        #Spike spawn 
        if player.x >= 430:
            window.blit(Spike, (470, 436))
        if detectCollisions(player.x, player.y, player.width, player.height, 470, 436, 43, 40):
            level = 5
            player.y = 999
        if player.x >= 900:                    #Level change
            level = 1
            player.x = 0
    #Level 1
    if level == 1:
        if player.x < 0:                    # Level change
            level = 0
            player.x = 900
        window.blit(background0, (0,0))    #Bottom bricks
        for f in list(floor_group):
            #if detectCollisions(player.x, player.y, player.width, player.height, f.x, f.y, f.width, f.height):
            f.render()
    print(health)
    player.x += velx
    player.y += vely
    player.update()
    clock.tick(50)                         #Tick Tock Tick Tock
    pygame.display.flip()                  #Updates the window
pygame.quit()
 
    