Codeia / app.py
Teotonix's picture
Update app.py
5322751 verified
import gradio as gr
import sys
from io import StringIO
def run_python_code(user_code):
# Standart çıktıyı yakalamak için (print sonuçlarını görmek için)
old_stdout = sys.stdout
redirected_output = sys.stdout = StringIO()
try:
# Kullanıcının yazdığı kodu çalıştır
exec(user_code)
sys.stdout = old_stdout
result = redirected_output.getvalue()
return result if result else "Kod çalıştı ama bir çıktı (print) üretmedi."
except Exception as e:
sys.stdout = old_stdout
return f"❌ Hata: {str(e)}"
# Arayüz Tasarımı
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# 🚀 Codeia: Geleceğin Yazılımcı Akademisi")
gr.Markdown("Kıraaal, hoş geldin! Bugün kodlamanın temellerini söküyoruz.")
with gr.Tabs():
# 1. SEKME: DERS 1
with gr.TabItem("Ders 1: Değişkenler"):
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("""
### 📝 Değişken Nedir?
Değişkenler, veri saklamak için kullandığımız kutular gibidir.
Python'da bir kutu oluşturmak çok kolaydır:
`isim = "Talha"`
**Görev:** Aşağıdaki alana kendi ismini bir değişkene ata ve ekrana yazdır!
""")
with gr.Column(scale=1):
code_input = gr.Code(label="Python Kodunu Yaz", language="python", lines=10)
output_text = gr.Textbox(label="Çalıştırma Sonucu", interactive=False)
run_btn = gr.Button("Kodu Test Et", variant="primary")
run_btn.click(fn=run_python_code, inputs=code_input, outputs=output_text)
# 2. SEKME: DERS 2 (Buraya yeni dersler ekleyebilirsin)
with gr.TabItem("Ders 2: Sayılarla İşlemler"):
gr.Markdown("Buraya da ikinci dersin içeriğini geleceğiz moruk.")
demo.launch()