Çevrimiçi Anonim Hatırat

Python Alıştırmalarım

P

Ben oldum olası bilgisayara ve bilgisayar teknolojilerine çok meraklı bir insandım. Çocukluğumdan beri böyleydi, bilgisayarı olan tiplerden çok daha iyi bilgisayar bilirdim. İlk bilgisayarımı ortaokulun sonlarında edinebilmeme rağmen her zaman CHIP, PcNet gibi dergileri alır ve okurdum. Neyse, bilgisayarım olur olmaz da hemen “web sitesi nasıl yapılır” gibi konulara daldım. Bir de pornoya tabii, hayvan gibi dadandım anasını satayım, neyse konu bu değil. İşte belli bir süredir de kendi kendime, Udemy kurslarıyla falan Python öğrenmeye çalışıyorum ve her becerebildiğim iş bana acayip zevk veriyor. Bunları bir de buraya atmak istedim, dursun öyle yanlışlıkla silerim falan..

Sayı Tahmini Oyunu

Bu benim göz bebeğim olabilir. İlk defa kendi kendime, sağdan soldan bakmadan, hatasıyla falan kendi uğraştığım bir script yazdım. Bildiğiniz sayı tahmin oyunu. Önce kaç tahmin hakkınız olmasını istiyorsunuz onu soruyor ondan sonra tahmin ediyorsunuz. “Çok gittin” – “az gittin” şeklinde ipucu veriyor, bulamazsanız kaybettin diyor, bulursanız tebrikler diyor. Bambasit bir program ama döngüleri öğrenirken işime çok yaradı.

import random #Rastgele sayı üretmek için ve bekletmek için modüller çağrıldı

rastgele = random.randint(1,100) # 1 - 100 (dahil) aralığında sayı belirlendi

hak = input("Kaç hakkın olsun?") # oyuncunun tahmin hakkı belirlendi
hak = int(hak)
#print(rastgele) #hack...

while hak != 0: # hak sıfır olmadıkça oyun devam etsin diye loop başladı
    tahmin = int(input("Tahminin: "))
    if tahmin == rastgele:
        print("Tebrikler kazandın!")
        break
    elif tahmin > rastgele:
        print("Çok gittin.") #ipucu
    elif tahmin < rastgele:
        print("Az Gittin") #ipucu
    hak -= 1

if hak > 0:
    input("Çıkmak için herhangi bir tuşa basın...")
else:
    input("Hakların bitti, oyunu kaybettin. Çıkmak için herhangi bir tuşa basın...")

Şifre Oluşturucu

Bunu da YouTube shortlarda gördüm, adamın yapışından farklı nasıl yapabilirim diye düşündüm çünkü o baya 3 değişken oluşturdu, bütün karakterleri yazdı, shuffle fonksiyonu kullandı falan derken benim kafam karıştı neden bu kadar uzattı ki diye. Neyse sonuç olarak bunu çıkarttım ortaya.

# Kullanacağımız modüller. string modülü şifrede kullanılan karakterleri otomatik olarak listeleyebilmek için
# Random modülü de işte karakterleri random seçebilmek için.
# Clipboard modülü de oluşturulan şifreyi otomatik olarak CTRL+V ile yapıştırabilmek için.
import string, random, clipboard

# Gördüğünüz üzere kaç karakterlik bir şifre istediğimizi soruyor.
pw_uzunluk = input("Kaç karakter olsun:\n")
# Şifre uzunluğunu string veri tipinden integer tipine dönüştürüyoruz ki döngüde sıkıntı çıkmasın
pw_uzunluk = int(pw_uzunluk) 
# Burada şifre içerisinde kullanacağımız bütün karakterleri bir liste haline getiriyoruz.
characters = string.ascii_letters + string.digits + string.punctuation
# Şifre değişkenini tanımlıyoruz.
sifre = ""

for i in range(pw_uzunluk): # Şifrenin uzunluğu kadar dönecek
    sifre = sifre + random.choice(characters) # Her seferinde random bir karakter seçerek sifre değişkenine ekleyecek

print("Şifre oluşturuldu {}. Panoya kopyalandı.".format(sifre)) # Şifreyi ekrana yazdıracak.
clipboard.copy(sifre) # Şifreyi clipboarda ekleyecek.

Telefon No Formatı ve Bulucu

Sikko bir başlık oldu ama kime ne, zaten kimse okumuyor o yüzden yasla gitsin. Bu aslında öyle çok bi mantığı olan bir script değil. Sırf algoritma anlamında kendimi geliştireyim diye yaptım. Girilen verinin 13 haneden oluşup oluşmadığını, hepsinin numerik olup olmadığını ve 05xx-xxx-xxxx formatında olup olmadığını kontrol ediyor. Ondan sonrasında da bu fonksiyonu kullanarak verilen bir metinde belirlenen formata uyan numaraları bulup listeliyor.

# İstenilen telefon formatı: "0xxx-xxx-xxxx" şeklinde. Eğer bu formatta bir no verilmez ise "False" dönüyor
def telno(numara):
    if len(numara) != 13: # Önce karakter  sayısını kontrol ediyor.
        return False
    for i in range(0,4): # İlk 3 karakterin sayı olup olmadığına bakıyor.
        if not numara[i].isdecimal():
            return False
    if numara[4] != "-": # Doğru ayraç kullanılmış mı bakıyoruz.
        return False
    for i in range(5,8):
        if not numara[i].isdecimal(): # Sonraki 3 karakter doğru mu?
            return False
    if numara[8] != "-": # Doğru ayraç kullanımına tekrar bakıyoruz.
        return False
    for i in range(10,13): # Son 4 rakam sayı mı ona bakıyoruz.
        if not numara[i].isdecimal():
            return False
    return True #Sorun yok ise "true" döndürüyoruz.

# Telefon no bulucu başlangıcı.

mesaj = 'Lütfen yarın 0532-125-9966 numarasından ya da 0536-455-7388 numaralı hattımdam arayınız.'

bulunanNo = False

for i in range(len(mesaj)):
    kume = mesaj[i:i+13]
    if telno(kume) == True:
        print("Telefon numarası:" + kume)
        bulunanNo = True
if not bulunanNo == False:
    print("Numara bulunamadı.")

Bilen arkadaşlar var ise, bunu bu kadar uzun yapmanın bir anlamı olmadığını da biliyorlardır. Regex ile çok daha kolay olabiliyor, kurs müfredatında hemen sonra onu öğrendim ve regex ile daha kısasını yaptım.

import re
mesaj = 'Lütfen yarın 0532-125-9966 numarasından ya da 0536-455-7388 numaralı hattımdam arayınız.'
telnoRegex = re.compile(r'\d\d\d\d-\d\d\d-\d\d\d\d')
bo = telnoRegex.search(mesaj)
bol = telnoRegex.findall(mesaj)
print(bo.group())
print(bol)

for i in range(len(bol)):
    print(str(i+1) + ") Bulunan numara:" + bol[i])

İşte böyle arkadaşlar. Böyle sik sik şeyler yapıyorum henüz ama her başarılı alıştırmam benim öğrenme şevkimi arttırıyor. Github’da falan paylaşılmayacak kadar basit ve sikko şeyler o yüzden neden kendi sitemde paylaşmayayım ki dedim ve paylaştım. Bye.

2 yorum

Çevrimiçi Anonim Hatırat

Etiketler