Python Mors Kodu Oluşturucu/Dönüştürücü

Hazırladığım bu kodda oluşturma ve dönüştürmeye ek olarak winsound modülü aracılığıyla oluşturulan kodlar sese de dönüştürülebiliyor.

import winsound
uzun,kisa = 700,200
menu = """Mors kodu oluşturucu/çevirici
(1)Morsa çevir
(2)Morstan çevir
(3)Çık"""
alfabe = [["a",".-"],["b","-..."],["c","-.-."],["d","-.."],["e","."],["f","..-."],["g","--."],["h","...."],["i",".."],["j",".---"],["k","-.-"],["l",".-.."],["m","--"],["n","-."],["o","---"],["p",".--."],
          ["q","--.-"],["r",".-."],["s","..."],["t","-"],["u","..-"],["v","...-"],["w",".--"],["x","-..-"],["y","-.--"],["z","--.."],["0","-----"],["1",".----"],["2","..---"],["3","...--"],["4","....-"],["5","....."],
          ["6","-...."],["7","--..."],["8","---.."],["9","----."]]
cevirilen_metin = ""
mors = ""
morstan_cevrilen = []
def oynat():
    global mors
    for i in mors:
        if i == "-":
            winsound.Beep(2000,uzun)
        if i == ".":
            winsound.Beep(2000,kisa)
while True:
    print(menu)
    cevirilen_metin = ""
    morstan_cevrilen = []
    secenek = int(input("Seçiminiz:"))
    if secenek == 1:
        metin = input("Çevrilmesini istediğiniz metini giriniz:")
        for i in metin:
            for z,x in alfabe:
                if i == z:
                    cevirilen_metin += x + " "
        mors = cevirilen_metin
        print("Sonuç:",cevirilen_metin)
        oynat()
    if secenek == 2:
        metin = input("Çevrilmesini istediğiniz kodu giriniz:")
        baslangic,indis = 0,0
        while indis < len(metin) - 1:
            indis += 1
            if metin[indis] == " ":
                morstan_cevrilen.append(metin[baslangic:indis])
                baslangic = indis + 1
        morstan_cevrilen.append(metin[baslangic:len(metin)])
        for i in morstan_cevrilen:
            for z,x in alfabe:
                if i == x:
                    cevirilen_metin += z
                    mors += i
        print("Sonuç:",cevirilen_metin)
        oynat()
    if secenek == 3:
        print("Yine bekleriz!")
        exit()

Python Mental Aritmetik Oyunu

Oyunu oynayabilmek için bir editör yerine komut satırını tercih etmelisiniz. Ekranda çıkan sayıları ezberleyin, verilen işlemleri yapın.

import os
import time
import random
can = 3
seviye = 3
standart = 3
sonuc = random.randint(1,50)
puan = 0
while can > 0:
    print(sonuc)
    time.sleep(3)
    while seviye > 0:
        islem = random.randint(0,4)
        if islem == 1:
            sayi = random.randint(1,50)
            sonuc += sayi
            print("+",sayi)
            time.sleep(2)
            seviye -= 1
            os.system("cls")
        if islem == 2:
            sayi = random.randint(1,9)
            sonuc *= sayi
            print("x",sayi)
            time.sleep(2)
            seviye -= 1
            os.system("cls")
        if islem == 3:
            sayi = random.randint(1,50)
            sonuc -= sayi
            print("-",sayi)
            time.sleep(2)
            seviye -= 1
            os.system("cls")
        if islem == 4:
            sayi = random.randint(1,50)
            while sonuc % sayi != 0:
                sayi = random.randint(1,50)
            sonuc /= int(sayi)
            print("/",sayi)
            time.sleep(2)
            seviye -= 1
            os.system("cls")
    yanit = input("Yanıtınız:")
    if yanit == "q":
        break
    if int(yanit) == sonuc:
        print("Doğru yanıt!")
        puan += 30
        time.sleep(3)
        standart += 1
        seviye = standart
        sonuc = random.randint(1,50)
    else:
        print("Yanlış yanıt!",sonuc,"olmalıydı.")
        time.sleep(3)
        puan -= 10
        can -= 1
        seviye = 3
        sonuc = random.randint(1,50)
print("Oyun bitti. Toplam puan:",puan)

Python Math Quiz

Oyun rastgele bir biçimde dört işlemden birini seçiyor ve şık oluşturuyor. Sizden istenen doğru şıkkı yazmanız. 3 defa yanlış yapmanız halinde oyun sona eriyor. 

import random
cevaplar = []
soru = ""
turSayisi = 0
puan = 0
cevap = 0
secenekler = {}
can = 3
def cevap_olustur():
    global cevap,cevaplar,secenekler
    while len(cevaplar) < 4:
        y_cevap = random.randint(cevap - 5,cevap + 5)
        if y_cevap != cevap and y_cevap not in cevaplar:
            cevaplar.append(y_cevap)
    cevaplar.sort()
    secenekler = {"a":cevaplar[0],"b":cevaplar[1],"c":cevaplar[2],"d":cevaplar[3]}
    return cevaplar
def toplama():
    global cevap,cevaplar
    sayi1 = random.randint(1,9999)
    sayi2 = random.randint(1,9999)
    cevap = sayi1 + sayi2
    cevaplar.append(cevap)
    return f"{sayi1} + {sayi2} = ?"
def cikarma():
    global cevap,cevaplar
    sayi1 = random.randint(1,9999)
    sayi2 = random.randint(1,9999)
    cevap = sayi1 - sayi2
    cevaplar.append(cevap)
    return f"{sayi1} - {sayi2} = ?"
def carpma():
    global cevap,cevaplar
    sayi1 = random.randint(1,9999)
    sayi2 = random.randint(1,9999)
    cevap = sayi1 * sayi2
    cevaplar.append(cevap)
    return f"{sayi1} * {sayi2} = ?"
def bolme():
    global cevap,cevaplar
    sayi1,sayi2 = 0,0
    while True:
        r_sayi1 = random.randint(1,9999)
        r_sayi2 = random.randint(1,9999)
        if r_sayi1 > r_sayi2 and r_sayi1 % r_sayi2 == 0:
            sayi1 = r_sayi1
            sayi2 = r_sayi2
            cevap = sayi1 / sayi2
            cevaplar.append(cevap)
            break
    return f"{sayi1} / {sayi2} = ?"
while can > 0:
    cevaplar = []
    turSayisi += 1
    print(turSayisi,". soru")
    islemModu = random.randint(1,4)
    if islemModu == 1:
        print(toplama())
        print(cevap_olustur())
        yanit = input("a/b/c/d").lower()
        if secenekler[yanit] == cevap:
            puan += 50
            print("Doğru yanıt! Puanınız:",puan)
        else:
            puan -= 50
            can -= 1
            print("Yanlış yanıt! Cevap",cevap,"olmalıydı.","Kalan can",can)
    if islemModu == 2:
        print(cikarma())
        print(cevap_olustur())
        yanit = input("a/b/c/d:").lower()
        if secenekler[yanit] == cevap:
            puan += 50
            print("Doğru yanıt! Puanınız:",puan)
        else:
            puan -= 50
            can -= 1
            print("Yanlış yanıt! Cevap",cevap,"olmalıydı.","Kalan can:",can)
    if islemModu == 3:
        print(carpma())
        print(cevap_olustur())
        yanit = input("a/b/c/d:").lower()
        if secenekler[yanit] == cevap:
            puan += 50
            print("Doğru yanıt! Puanınız:",puan)
        else:
            puan -= 50
            can -= 1
            print("Yanlış yanıt! Cevap",cevap,"olmalıydı.","Kalan can:",can)
    if islemModu == 4:
        print(bolme())
        print(cevap_olustur())
        yanit = input("a/b/c/d:").lower()
        if secenekler[yanit] == cevap:
            puan += 50
            print("Doğru yanıt! Puanınız:",puan)
        else:
            puan -= 50
            can -= 1
            print("Yanlış yanıt! Cevap",cevap,"olmalıydı.","Kalan can:",can)
print(f"\nOyun Sonucu\nToplam tur:{turSayisi}\nToplam puan:{puan}")

Python Adam Asmaca

import random
kelimeler = ["taksi","araba","tanker","imza","kobay"]
can = 5
d_list = []
durum = ""
puan = 0
secilen_kelime = ""
tahmin = ""
ipucu = 3
kontrol_k = ""
def harf_tarama():
    global d_list,secilen_kelime,tahmin,d_list
    for x,y in enumerate(secilen_kelime):
        if y == tahmin:
            d_list[x] = tahmin
def kontrol():
    global d_list,kontrol_k
    kontrol_k = ""
    for i in d_list:
        kontrol_k += i
    if kontrol_k == secilen_kelime:
        return False
    else:
        return True
while can > 0:
    ipucu = 3
    sayi = random.randint(0,len(kelimeler) - 1)
    secilen_kelime = kelimeler[sayi]
    durum = len(secilen_kelime)* "-"
    d_list = list(durum)
    print(len(secilen_kelime),"harfli bir kelime arıyorsunuz:\n",durum)
    tahmin = input("Tahmininizi giriniz:")
    if bool(tahmin) != True:
        exit()
    while bool(tahmin) == True and can > 0 and kontrol and ipucu > 0:
        if kontrol_k == secilen_kelime:
            puan += 30
            print("Doğru harfler! Puanınız:",puan)
            break
        if tahmin == secilen_kelime:
            puan += 50
            print("Doğru tahmin! Puanınız:",puan)
            break
        if len(tahmin) == 1 and kontrol():
            harf_tarama()
            print(d_list)
            ipucu -= 1
            print("Kalan ipucu:",ipucu)
            tahmin = input("Tahmininizi giriniz:")
        else:
            puan -= 10
            can -= 1
            print("Yanlış tahmin! Doğrusu:",secilen_kelime,"\nPuanınız:",puan,"Kalan can:",can)
            break
print("Final skoru:",puan)

Thinking in Tkinter

  •  Standart bir kullanıcı arayüzü(UI) ne yapmalıdır?
  1. Kullanıcı arayüzü yazan bir programcı ilk olarak kullanıcıya neler göstereceğini belirlemelidir
  2. Kullanıcı arayüzünün hangi işlemleri yapacağını belirlemelidir.
  3. Görüntü ile yapılan işlemleri uygun bir biçimde birbiriyle eşleştirmelidir.
  4. Kullanıcı girişini gerçekleştirmeye imkan tanımalıdır.
  • Temel Kullanıcı Arayüzü Terimleri
  1. Bir kullanıcı arayüzü, arayüz oluşturmak adına programcıya "widget" adı verilen bileşenler sunar. Bu widgetler arayüzde görüntülenen şeylerdir. Bunlar, buton, pencere, menü, scrollbar vb. olabilir.
  2. Event handlers sayesinde herhangi gerçek zamanlı bir eylemden haberimiz olabilir. Örneğin kullanıcının imleci pencere üzerinde dolaştırması, klavyeye basması, fareye tıklaması gibi.
  3. Binding ise widget'ler ile event handler'ları birbirine bağlamamızı sağlar.
  4. Event loop ise programın kullanıcıdan veri girmesini beklediğimiz kısımdır.
      Basit Bir Tkinter Programı ve Açıklaması
from tkinter import *
root = Tk()
root.mainloop()
    Birinci satırda tkinter kütüphanesini kodumuza ekliyoruz. İkinci satırda root değişkenine tkinter.Tk sınıfının bir örneğini eşitliyoruz. İsterseniz type fonksiyonu ile araştırabilirsiniz. Son satırdaysa event loop oluşturuyoruz. Event loop kullanıcıdan bir destroy eventi gelinceye kadar event handlerlar aracılığıyla veri girişini kontrol eder.

       Container
    Burada widgetları nasıl kullanacağımıza karar vermeden önce containerlardan bahsetmemiz gerekiyor. Bir widgetı direkt olarak tkinter.Tk nesnesinin üzerine değil container'ın üzerine ekleriz. Bu çeşitli şekillerde arayüz oluşturma deneyimimizi geliştirir, kolaylaştırır. Her tkinter.Tk nesnesinde yeni bir pencere oluştururuz. Ancak container'lar sayesinde tek bir pencereyi ebeveyn(parent) olarak seçip söz konusu container'a widgetleri ekleyebiliriz. Birden fazla container ile tek bir pencerede çalışabiliriz.

from tkinter import *
root = Tk()
container = Frame(root)
container.pack()
root.mainloop()
    Burada Frame(bir container) nesnesi oluşturup container değişkenine atadık. Parametre olarak ebeveyn tkinter.Tk nesnesini seçtik(root). pack metodu nesnelerin arayüzde gözükmesini sağlar. Bu iki işlem - ebeveyn ile ilişkilendirme ve pack - Tkinter programlamada sıkça karşımıza çıkacak.

    Pack Hakkında Not: Aslında Tkinter'ın kendisi Tcl/Tk ile arayüz oluşturabilmek için oluşturulan bir Python API'sidir. Pack metodu da Tkinter kütüphanesi ile aramızda köprü oluşturarak widget ve containerların nasıl görüntüleneceğini belirler. Nitekim kendisi bir geometry manager'dır.

    Not: tkinter.Tk ile oluşturulan pencerenin kendisi de container içermektedir. Diğerlerinden farklı olarak cavity adı verilmiştir bu container'a. Cavity, elastik bir biçimde dizayn edilmiştir. Üzerine eklenen widget ve containerların boyutuna göre kendi boyutlarını belirler.

Python ile Sezar Şifrelemesi

alfabe = "abcçdefghıijklmnoöprsştuüvyz"
hane = int(input("Kaç hane atlansın?"))
yazi = input("Gizlemek istediğiniz yazıyı girin: ")
sira = 0
sifre1 = ""
sifre = []
def mod(sayi,hane):
    if sayi + hane > 29:
        return (29 + hane) - hane
    else:
        return sayi + hane
for i, z in enumerate(alfabe):
    sifre.append([z,mod(i,hane)])

for i in yazi:
    for s,h in sifre:
        if i == s:
            sira = h
            sifre1 += sifre[sira][0]
            
print(sifre1)

Python ile Soru Çözüm Kitabı

 

    Bu başlık altında Python ile Soru Çözüm Kitabı'nda hoşuma giden kod örneklerini paylaşmayı planlıyorum. Kitap Dr. Eftal Şehirli ve Dr. Muhammed Kamil Turan ortaklığında yazılmış. Kitabı satın almak isterseniz https://www.nobelyayin.com/kitap_16696.html adresine bakabilirsiniz. E-Kitap olarak da kiralanabiliyor.

metin = input("Metin giriniz: ")
ifade = input("Aranmak istenen ifadeyi giriniz: ")
ifadeVarMi = False
i = 0
while i <= len(metin) - len(ifade):
    if metin[i: i + len(ifade)] == ifade:
        ifadeVarMi = True
        break
    i += 1
if ifadeVarMi:
    print("İfade var.")
else:
    print("İfade yok.")

Bu basit ve harika kodda string kesme işlemleri kullanılarak while döngüsünün her adımında bir karakter ilerlenerek metindeki ifade aranıyor.