Prompt
Sen okunabilir, test edilmiş ve üretim kalitesinde Python kodu yazan kıdemli bir geliştiricisin.
Fonksiyonun yapması gereken: [GOREV]
Örnek girdi ve beklenen çıktılar: [ORNEKLER]
Kısıtlar (Python sürümü, kullanılabilir kütüphaneler, performans beklentisi): [KISITLAR]
Başlamadan önce: Belirsiz bir davranış varsa (boş girdi, geçersiz tip, büyük veri) varsayım yapmak yerine en fazla 3 kısa soru sor ve yanıtımı bekle.
Çıktı:
1. Fonksiyon:
- Tip ipuçları ve açıklayıcı bir docstring (amaç, parametreler, dönüş değeri, fırlatılan hatalar, örnek).
- Anlamlı değişken adları; gereksiz karmaşıklık yok.
- Uç durumlar: Boş girdi, None, yanlış tip, sınır değerleri.
2. pytest testleri: Normal durumlar, uç durumlar ve hata durumları için en az 6 test; parametrize kullan.
3. Karmaşıklık: Zaman ve bellek karmaşıklığı, kısa gerekçesiyle.
4. Alternatif: Daha kısa veya daha hızlı bir yaklaşım varsa ve ne zaman tercih edilmesi gerektiği.
5. Çalıştırma: Testleri nasıl çalıştıracağım (komut).
Kurallar: Dış kütüphane gerekmiyorsa kullanma. Kodu tek parça hâlinde, kopyalanabilir ver.
Doldurulacak alanlar 3
- [GOREV]
- Fonksiyonun yapacağı iş Örn. Türkiye telefon numaralarını farklı yazımlardan (+90, 0, boşluklu, tireli) tek biçime (+905XXXXXXXXX) dönüştürmek
- [ORNEKLER]
- Örnek girdi ve çıktılar Örn. "0532 123 45 67" → "+905321234567", "532-123-4567" → "+905321234567", "12345" → ValueError
- [KISITLAR]
- Teknik kısıtlar Örn. Python 3.11, sadece standart kütüphane
Örnek çıktı
```python
import re
def normalize_tr_phone(raw: str) -> str:
"""Türkiye cep telefonu numarasını +905XXXXXXXXX biçimine dönüştürür.
Args:
raw: Kullanıcının girdiği numara ("0532 123 45 67", "+90 532...").
Returns:
E.164 biçiminde numara, ör. "+905321234567".
Raises:
ValueError: Numara geçerli bir Türkiye cep telefonu değilse.
"""
if not isinstance(raw, str) or not raw.strip():
raise ValueError("Numara boş olamaz.")
digits = re.sub(r"\D", "", raw)
...
```
Testler
```python
@pytest.mark.parametrize("raw, expected", [
("0532 123 45 67", "+905321234567"),
("+90 (532) 123-45-67", "+905321234567"),
...
])
def test_valid_numbers(raw, expected): ...
```
Karmaşıklık: O(n) zaman, O(n) bellek (n: girdi uzunluğu).
Çalıştırma: pytest -q
import re
def normalize_tr_phone(raw: str) -> str:
"""Türkiye cep telefonu numarasını +905XXXXXXXXX biçimine dönüştürür.
Args:
raw: Kullanıcının girdiği numara ("0532 123 45 67", "+90 532...").
Returns:
E.164 biçiminde numara, ör. "+905321234567".
Raises:
ValueError: Numara geçerli bir Türkiye cep telefonu değilse.
"""
if not isinstance(raw, str) or not raw.strip():
raise ValueError("Numara boş olamaz.")
digits = re.sub(r"\D", "", raw)
...
```
Testler
```python
@pytest.mark.parametrize("raw, expected", [
("0532 123 45 67", "+905321234567"),
("+90 (532) 123-45-67", "+905321234567"),
...
])
def test_valid_numbers(raw, expected): ...
```
Karmaşıklık: O(n) zaman, O(n) bellek (n: girdi uzunluğu).
Çalıştırma: pytest -q
0
- Kopyalanma
- 132
- Olumlu oy
- +0
- Yorum
- 0
Promptun aracı
ChatGPT için diğer promptlarBenzer promptlar
- Arama Niyetine Uygun SEO Blog Yazısı Hedef anahtar kelimenize göre arama niyetini analiz eden, önce taslak sunup onayınızı alan, sonra özgün deneyim ve örneklerle zenginleştirilmiş SEO uyumlu bir blog yazısı yazdırın.
- Dürüst ve Güven Veren Ürün İnceleme Yazısı Kullandığınız bir ürünü kendi deneyiminize dayanarak; artıları, eksileri, kime uygun olup olmadığı ve alternatifleriyle birlikte okurun karar vermesini kolaylaştıran dürüst bir incelemeye dönüştürün.
- "En İyi X Öneri" Formatında Liste Yazısı (Listicle) "En iyi 10 ...", "... için 7 öneri" gibi liste yazılarını; her maddesi gerçekten fark yaratan, seçim kriterleri açık ve okuyucuya "hangisi bana uygun?" sorusunun cevabını veren biçimde yazın.
- Okunan ve Tıklanan E-Bülten (Newsletter) Hazırlama Haftalık veya aylık e-bülteniniz için; açılma oranını artıran konu satırları, kişisel bir giriş, taranabilir bölümler ve tek net eylem çağrısıyla okunan bir bülten hazırlayın.
Topluluk denemeleri (0)
Bu promptla üretilen görseller. Siz de denediyseniz sonucunuzu paylaşın; editör onayından sonra burada görünür.
Henüz paylaşılan deneme yok. İlk sonucu siz paylaşın.
Yorumlar (0)
Henüz yorum yok
Promptu denediyseniz deneyiminizi veya geliştirme önerinizi paylaşın.
Yorum yapmak için giriş yap