Faydalı Python Scriptleri

Herkese merhaba.

Bu başlık altında; formülleri, lambda’ları, çeşitli frameworkler için başlangıç taslaklarını ve benzeri ufak ama faydalı Python kodarını toplayalım.

Amaç: Faydalı bulup işaretletlediğimiz gönderileri arşivlemek ve herkesin kolayca faydalanmasını sağlamak.


Nesne Tabanlı TkInter Taslağı

Gönderen: @Samet195 | Gönderi: Bu Kodu Nasıl Nesne Tabanlı Hale Getirebilirim?

1. Seçenek:
from tkinter import *


class Window:
    def __init__(self, root):
        self.root = root

        self.root.title("TkInter Taslağı")
        self.root.geometry("720x468")
        self.root.config(bg="White")

        Label(text="Merhaba, Dünya!", bg="White").pack(expand=True)

        self.root.mainloop()


if __name__ == "__main__":
    root = Tk()
    Window(root)

2. Seçenek:
from tkinter import *


class Window:
    def __init__(self, root):
        self.root = root

        self.root.title("TkInter Taslağı")
        self.root.geometry("720x468")
        self.root.config(bg="White")

        self.main()
        self.root.mainloop()

    def main(self):
        Label(text="Merhaba, Dünya!", bg="White").pack(expand=True)


if __name__ == "__main__":
    root = Tk()
    Window(root)


Parametrik Uzay Hesaplayıcı

Gönderen: @EkremDincel | Gönderi: For ile alınmış iki liste çıktısını, birleştirme

import itertools
from functools import reduce

def solution(kume, n):
    return reduce(lambda l, r: l+r, (list(map("".join, itertools.product(kume, repeat=i))) for i in range(1, n+1)), [])

kume = "123ABC"

print(solution(kume, 2))

SQLite3'den Özet Veri Çekmek

Gönderen: @coderistan | Gönderi: Python - Sqlite3’den Özet Veriler Çekmek

import sqlite3

vt = sqlite3.connect("veritabani.db")
cursor = vt.cursor()

cursor.execute("""
SELECT TUR,COUNT(TUR),SUM(TUTAR) FROM GELIR GROUP BY TUR
""")
veriler = cursor.fetchall()

for tur_adi,adet,toplam in veriler:
    print("{0} adet {1} için toplam: {2}".format(adet,tur_adi,toplam))

Sayı Tahmini Yapılan Program

Gönderen: @aib | Gönderi: Python tahmin sayısı bulma

import random

print((lambda correct: "Hiç doğru tahmininiz yok." if correct == 0 else str(correct))((lambda xs, ys: sum([1 for x in xs if x in ys]))([int(input(f"{i}. sayı: ")) for i in range(1, 11)], random.sample(range(1, 50), 6))))

Düzeltme: Tahmin olarak yaptığımız sayıyı 10’a çıkardım ve Türkçe’ye daha uygun yaptım.


Python'da Matris Çarpımı

Gönderen: @dildeolupbiten | Gönderi: Python’da Matris Çarpımı

def multiply(x, y):
    if len(x[0]) != len(y):
        raise ValueError(
            f"Çarpım işlemi yapılamaz, çünkü 1. matrisin sütun "
            f"sayısı olan {x[0]}, ikinci matrisin satır sayısı "
            f"olan {len(y)} sayısına eşit değil."
        )
    return [
        [
            sum(x[i][k] * y[k][j] for k in range(len(x[0]))) 
            for j in range(len(y[0]))
        ] 
        for i in range(len(x))
    ]

Öklid Uzunluk Formülü

Gönderen: @dildeolupbiten | Gönderi: Öklid Uzunluk Formülünü Python ile kodlamak

def sub(arr):
    return [arr[0] - i for i in arr[1:]] + sub(arr[1:]) if arr else []
    
    
def solution(arr1, arr2):
    return [(i ** 2 + j ** 2) ** 0.5 for i, j in zip(arr1, arr2)]
    
    
x1 = [4, 6, 5, 10, 11]
x2 = [2, 4, 1, 6, 8]

x = solution(sub(x1), sub(x2))
print(x)

4 Beğeni

Boyle bir magic function olmadigindan mutevellit, boyle bir isimlendirme yanlis. Ornek olarak vermek daha da yanlis.

Soyle olabilirdi:

class Window(Tk):
 def __init__(self):
  super().__init__()
  self.title(...); self.geometry(...); self.config(...)
  
  self.create_widgets()
   
  ...
3 Beğeni

Doğrudan, Tk sınıfını miras almak, ilerliyen aşamalarda işleri karmaşıklaştırıyor. self, hem tanımlanan fonksiyonların ilk parametresi, hemde widgetlerin, master parametresi oluyor.


Bunun, sadece bir isimlendirme tercihi olduğunu, not ederim.

1 Beğeni

O kisisel tercih. O isimlendirme de kisisel tercih ama kurallara uymadigi icin ornek olarak gostermeniz yanlis. Eger ornek paylasacaksaniz, en azindan degisken isimlendirmelerine dikkat etmeniz lazim.

3 Beğeni

Genelde miras işlemi diğer widgetler için yapılıyor, tk.Tk’nın mirası pek alınmıyor. Zaten pek anlamı da yok.

1 Beğeni