Python Sezar Deşifreleme

 


import ttkbootstrap as ttk
import tkinter as tk
from ttkbootstrap.constants import *
from tkinter.filedialog import asksaveasfilename

harfler = {0:"a",1:"b",2:"c",3:"ç",4:"d",5:"e",6:"f",7:"g",8:"ğ",9:"h",10:"ı",11:"i",12:"j",13:"k",14:"l",15:"m",16:"n",17:"o",18:"ö",
           19:"p",20:"r",21:"s",22:"ş",23:"t",24:"u",25:"ü",26:"v",27:"y",28:"z"}

def cozumle():
    global cozumlenecek_metin,cozumlenmis_metin,spnbx,cozumle_btn
    sira = 1
    metin = cozumlenecek_metin.get("1.0",tk.END)
    cozumlenecek_metin.delete("1.0",tk.END)
    cozumlenmis_metin.delete("1.0",tk.END)
    cozumle_btn["state"] = DISABLED
    yeni_metin = ""
    if len(metin) > 0:
        while sira <= int(spnbx.get()):
            for harf in metin.lower():
                for i in harfler.keys():
                    if harf not in harfler.values():
                        yeni_metin += harf
                        break
                    if harf == harfler[i]:
                        if i + sira >= len(harfler):
                            mod = abs(29 - (i + sira))
                            yeni_metin += harfler[mod]
                        else:
                            yeni_metin += harfler[i + sira]
                        continue
            sira += 1
            yeni_metin += " - {} \n".format(sira - 1)
            cozumlenmis_metin.insert(tk.END,yeni_metin)
            yeni_metin = ""
        cozumle_btn["state"] = ACTIVE
    else:
        print("Çözümlenecek bir metin giriniz.")
        cozumle_btn["state"] = ACTIVE

def kaydet():
    dizin = asksaveasfilename()
    with open("{}.txt".format(dizin),"w") as ds:
        ds.write(cozumlenmis_metin.get("1.0",tk.END))
        ds.close()

pencere = tk.Tk()
ttk.Style("solar")
pencere.title("Sezar Çözücü")
pencere.geometry("600x480")
pencere.resizable(0,0)
cozumlenecek_metin = ttk.Text(width=20)
cozumlenecek_metin.grid(row=0,column=0,padx=10,pady=10)

cozumlenmis_metin = ttk.Text(width=20)
cozumlenmis_metin.grid(row=0,column=1,pady=10)
spnbx = ttk.Spinbox(bootstyle="warning",from_=1,to=29)
spnbx.insert(0,"1")
spnbx.configure(state="readonly")
spnbx.grid(row=0,column=2,padx=10)
cozumle_btn = ttk.Button(text="Çözümle",bootstyle="warning",command=cozumle)
cozumle_btn.grid(row=1,column=0)
kaydet_btn = ttk.Button(text="Kaydet",bootstyle="warning",command=kaydet).grid(row=1,column=1)

pencere.mainloop()

Python Custom Split Fonksiyonu

 Karakter buluncaya kadar indisi arttırıp iterable’da arama yapıyor. Bulunca konumunu kaydedip kelime_baslangic’a atıyor ve bir sonraki döngüye geçiyor.
Sonraki döngüde space oluncaya dek kelime_boyutu arttırılıyor. kelime_baslangic:kelime_baslangic+kelime_boyutu olacak şekilde kelime ekleniyor.

 

metin = input("Metin: ") + " "
kelimeler = []
indis = 0
kelime_baslangic = 0
kelime_indis = 0
while indis < len(metin) - 1:
    if " " not in metin:
        kelimeler.append(metin[0:])
        break
    if metin[indis] == " ":
        indis += 1
    else:
        kelime_baslangic = indis
        kelime_indis = indis
        kelime_boyutu = 0
        while metin[kelime_indis] != " ":
            kelime_boyutu += 1
            kelime_indis += 1
            if metin[kelime_indis].isspace():
                kelimeler.append(metin[kelime_baslangic:kelime_baslangic + kelime_boyutu])
                indis += kelime_boyutu
                kelime_indis = 0
                kelime_boyutu = 0
                break
print(kelimeler)  

İkinci örnek:

 

metin = bytearray(input("Metin: "),"utf-8","ignore")
indis = 0
kelimeler = []
while len(metin) > 0:
    for i in metin.decode():
        if i.isspace():
            kelimeler.append(metin[0:indis].decode())
            del metin[0:indis + 1]
            indis = 0
            break
        indis += 1
    if " " not in metin.decode():
        kelimeler.append(metin.decode())
        del metin[0:]
            
print(kelimeler)

Yukarıdaki ile prensip olarak aynı. Tek fark her boşluk karakterinde bytearray nesnesi sayesinde metni silip iterasyonu tekrarlaması.

Python XOX Oyunu

import os
import time

os.system("clear")
satirlar = "abc"
sutunlar = "123"
koordinatlar = []
oynama_sirasi = 1

for x in satirlar:
    for b in sutunlar:
        koordinatlar.append(x+b)
tahta = dict(zip(koordinatlar,(len(koordinatlar)) * "*"))
def tahtayi_goster(tahta):
    print("1 2 3\n")
    for i,z in enumerate(tahta.values()):
        if (i + 1) % 3 == 0:
            print(z,end=" ")
            print(satirlar[int(str(i / 3)[0])])
            print("\n")
            
        else:
            print(z,end=" ")
def kontrol(tahta):
    durumlar = [list({tahta["a1"],tahta["a2"],tahta["a3"]}),
                list({tahta["b1"],tahta["b2"],tahta["b3"]}),
                list({tahta["c1"],tahta["c2"],tahta["c3"]}),
                list({tahta["a1"],tahta["b2"],tahta["c3"]}),
                list({tahta["c1"],tahta["b2"],tahta["a3"]}),
                list({tahta["a1"],tahta["b1"],tahta["c1"]}),
                list({tahta["a2"],tahta["b2"],tahta["c2"]}),
                list({tahta["a3"],tahta["b3"],tahta["c3"]})]
    for i in durumlar:
        if len(i) == 1:
            if i != ["*"]:
                print("{} oyuncusu oyunu kazandı.".format(i[0]))
                tahtayi_goster(tahta)
                return False
            else:
                return True
        else:
            return True

def beraberlik(tahta):
    bos_kare = 0
    for i in tahta.keys():
        if tahta[i] == "*":
            bos_kare += 1
    if bos_kare == 0:
        print("Beraberlik.")
        time.sleep(2)
        return True
    else:
        return False

def sira(oynama_sirasi):
    if oynama_sirasi % 2:
        return "O"
    else:
        return "X"

while kontrol(tahta) and not beraberlik(tahta):
    tahtayi_goster(tahta)
    girilen_koordinat = input("{} oyuncusu için koordinat: ".format(sira(oynama_sirasi))).lower()
    try:
        if tahta[girilen_koordinat] == "*":
            tahta[girilen_koordinat] = sira(oynama_sirasi)
            oynama_sirasi += 1
        else:
            print("Girdiğiniz koordinat dolu.")
            time.sleep(1)
    except KeyError:
        print("Girdiğiniz koordinat yanlış.")
        time.sleep(1)
  os.system("clear")

Spongebob Text Generator

 


import ttkbootstrap as ttk
import tkinter as tk
import random
from ttkbootstrap.constants import *
from tkinter.filedialog import askdirectory

def spongelama():
    global yazi
    txt = yazi.get(0.0,tk.END).lower()
    yazi.delete(0.0,tk.END)
    indis = 0
    sponge_sayisi = int(len(txt) / 2)
    while sponge_sayisi > indis:
        r_sayi = random.randint(0,len(txt) - 1)
        if txt[r_sayi].islower() and txt[r_sayi].isspace() == False:
            txt = txt[0:r_sayi] + txt[r_sayi].upper() + txt[r_sayi + 1:]
            indis += 1
        else:
            pass
    yazi.insert(0.0,txt)
    indis = 0

def kaydet():
    dizin = askdirectory()
    dosya = open("{}/sponge.txt".format(dizin),"w")
    dosya.write(yazi.get(0.0,tk.END))
    dosya.close()

pencere = tk.Tk()
pencere.resizable(0,0)
stil = ttk.Style("darkly")
pencere.title("Spongebob Creator")
yazi = ttk.Text()
yazi.pack(padx=35,pady=38)
kaydet_btn = ttk.Button(text="Kaydet",bootstyle=INFO,command=kaydet)
kaydet_btn.place(x=200,y=512)
olustur_btn = ttk.Button(text="Oluştur",bootstyle=SUCCESS,command=spongelama)
olustur_btn.place(x=400,y=512)
pencere.mainloop()

İnterval Antrenman Programı

 

Kardiyo çalışmalarında destek olabilecek tamamen python ile yazdığım bir uygulama. Kaynak koduna buradan erişebilirsiniz.