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.

Python Direnç Hesaplama

 


import tkinter as tk
from tkinter.ttk import Combobox
from tkinter import messagebox
direnc_tablosu = {"siyah":0,"kahverengi":1,"kırmızı":2,"turuncu":3,"sarı":4,"yeşil":5,"mavi":6,"mor":7,"gri":8,"beyaz":9}
tolerans_tablosu = {"renksiz":20,"gümüş":10,"altın":5,"kahverengi":1,"kırmızı":2,"yeşil":0.5,"mavi":0.25,"mor":0.1,"gri":0.05}
direncler = list(direnc_tablosu.keys())
toleranslar = list(tolerans_tablosu.keys())
def hesapla():
    global renk1_cbox,renk2_cbox,renk3_cbox,direnc_tablosu,tolerans_tablosu,tlr
    sayi1 = direnc_tablosu[renk1_cbox.get()]
    sayi2 = direnc_tablosu[renk2_cbox.get()]
    sayi3 = direnc_tablosu[renk3_cbox.get()]
    sayi4 = tolerans_tablosu[tlr.get()]
    ohm = int(sayi1+sayi2) * 10 ** int(sayi3)
    aralik = ohm * (sayi4 * 10**-2)
    messagebox.showinfo(message="Direnç: {} - {} arasındadır.".format((ohm-aralik),(ohm+aralik)))
pencere = tk.Tk()
pencere.title("Direnç Hesaplama")
pencere.resizable(False,False)
etk1 = tk.Label(text="Renk 1")
etk1.grid(row=0,column=0)
etk2 = tk.Label(text="Renk 2")
etk2.grid(row=0,column=1)
etk3 = tk.Label(text="Çarpan")
etk3.grid(row=0,column=2)
etk4 = tk.Label(text="Tolerans")
etk4.grid(row=0,column=3)
renk1_cbox = Combobox(values=direncler)
renk1_cbox.grid(row=1,column=0)
renk2_cbox = Combobox(values=direncler)
renk2_cbox.grid(row=1,column=1)
renk3_cbox = Combobox(values=direncler)
renk3_cbox.grid(row=1,column=2)
tlr = Combobox(values=toleranslar)
tlr.grid(row=1,column=3)
hsp_btn = tk.Button(text="Hesapla",command=hesapla)
hsp_btn.grid(row=2,column=1)
cks = tk.Button(text="Çıkış",command=exit)
cks.grid(row=2,column=2)
pencere.mainloop()