Python NameError

import random
kartlar = [1,1,2,3,4,5,6,7,8,9]
print("Blackjack Oyununa Hoşgeldiniz")
def kart_iste():
    puan=int(0)
    a1 = random.choice(kartlar)
    if int(a1) == int(1):
        a2 = input("As kartı aldınız 11 olarak mı oynayacaksınız 1 olarak mı ?\n")
        if int(a2) == int(11):
            puan+=11
        elif int(a2) == int(1):
            puan+=1
    else:
        puan+=int(a1)
        devam()
    return puan
def devam():
    if puan == int(21):
        print("Kazandın !!!")
        analog_interface()
    elif puan > int(21):
        print("Kaybettin")
        analog_interface()
    else:
        a3 = input("Yeni Puanınız {} Kart İstiyormusunuz ? (Y/N)\n".format(puan))
        if str(a3) == "Y" or "y":
            kart_iste()
        if str(a3) == "N" or "n":
            print("Puanınız {}".format(puan))
            analog_interface()
    return puan
def analog_interface():
    a4 = input("""
            [1] Tek Kişilik Oyna




\n""")
    if int(a4) == int(1):
        kart_iste()
analog_interface()

Basit 40-50 satırlık bir Blackjack oyunu kodluyorum python’da ve şu hatayı alıyorum bir türlü çözemedim yardımcı olursanız sevinirim.
NameError: name ‘puan’ is not defined

Puani kart iste fonksiyonunda tanimlamissin, ama baska bir fonksiyondan cagiriyorsun. Yazbel belgelerinden fonksiyonlar bolumunu oku.

Link atabilirmisiniz, teşekkürler.

Puan adlı bir değişken yok. Bir fonksiyonun içinde tanımlanan değişkene dışarıdan erişilemez.