İlk Python Uygulamam;Sevgili Günlük

Başlatan Elysion, 14 Mart 2014 - 22:28:17

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Elysion

Arkadaşlar merhaba aranıza yeni katılıyorum Ubuntuya geçtikten sonra Python öğrenmeye başladım ilk uygulama olarak bir günlük tutma programı yazdım kaynak kodları ;

#-*- coding: utf-8 -*-
#!/usr/bin/env python
__author__ = 'elysion'
#Sevgili Günlük#
import time
rply=0
while rply==0:
    zaman = time.strftime("%d.%m.%Y") #Günün tarihini al
    karsilama = input("""Günlüğüne Hoşgeldin,Günlük Yazmak için "Y" okumak için "O" Çıkmak için 'Ç' yi tuşlayın """)#İşlem bilgisi al
    if karsilama=="y" or karsilama=="Y" :
        try:
            gunlukdosya = open(zaman, "w")#Dosya oluştur,yazılabilir olarak aç
            gunluk = str(input("Hadi Bugun neler oldu anlat bana ?"))# Günlüğün içeriğini al
            gunlukdosya.write(gunluk)#Günlüğün içeriğini dosyaya yaz.
            gunlukdosya.close()#Dosyayı Kapat.
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
            rply=0
        finally:
            gunlukdosya.close()
    if karsilama=="o" or karsilama=="O":
        trhal=input("Okumak istediğiniz günü lütfen '"+zaman+"' şeklinde yazınız")#Dosya adını al
        try:
            gunlukoku=open(trhal,"r")#dosyayı sadece okunabilir olarak aç
            print(gunlukoku.read())#dosyada gördüklerini yaz
            gunlukoku.close()#dosyayı kapat
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
            rply=0
    if karsilama=="ç" or karsilama=="Ç":
        quit()
    vedalasma=input("Devam etmek istiyorsanız 'D' çıkmak istiyorsanız 'Ç'yi tuşlayınız.")
    if vedalasma=="D" or vedalasma=="d":
        rply=0
    if vedalasma=="ç" or vedalasma=="Ç":
        print("   ", 'Yarın tekrar görüşmek üzere Mutlu Ol !',"   ")
        quit()


Bunlar birde bu uygulamamı , Sınıf ve Fonksiyon tanımlayarak yapmaya çalıştım fakat hata alıyorum sorunun nerede olduğunu bir türlü çözemedim yardımcı olabilir misiniz ? Kaynak kodları ;

#-*- coding: utf-8 -*-
#!/usr/bin/env python
__author__ = 'elysion'
import time
class sevgiligunluk:
    def __init__(self,karsilama,):
        karsilama = input('Günlüğüne Hoşgeldin,Günlük Yazmak için "Y" okumak için "O" Çıkmak için "Ç" yi tuşlayın ')
        if karsilama == "o" or "o":
            gunlugum.gunlukoku()
        if karsilama=="y"or"y":
            gunlugum.gunlukyaz()
        if karsilama=="ç"or"Ç":
            gunlugum.cik()
        else:
            print("Hatalı Giriş Yaptınız Tekrar deneyiniz")
    def gunlukyaz(self,zaman,gunlukdosya,gunlukmetni):
        try:
            zaman = time.strftime("%d.%m.%Y")
            gunlukdosya = open(zaman, "w")
            gunlukmetni = str(input("Hadi Bugun neler oldu anlat bana ?"))
            gunlukdosya.write(gunluk)
            gunlukdosya.close()
            print("Günlük Başarıyla yazıldı.")
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
        finally:
            gunlukdosya.close()
    def gunlukoku(self,trhal,gunlukokuma):
        try:
            trhal=input("Okumak istediğiniz günü lütfen '"+zaman+"' şeklinde yazınız")
            gunlukokuma=open(trhal,"r")
            print(gunlukokuma.read())
            gunlukokuma.close()
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
    def cik(self):
        print("   ", 'Yarın tekrar görüşmek üzere Mutlu Ol !',"   ")
        quit()
gunlugum=sevgiligunluk()
gunlugum()
Özü gülmeyeni yüzü güler mi ?

empax

Değişkenleri tanımlarken değişkeni metoda parametre olarak eklemişsiniz, bunu sadece metoda değer gönderirken yapmalısınız.
Misal;


def gunlukyaz(self,zaman,gunlukdosya,gunlukmetni):
metod bu şekilde tanımlanmış ama
gunlugum.gunlukyaz()
bu şekilde çağrılmış.
Normalde şöyle olmalı;
self.gunlukyaz(ZamanDegeri,gunlukdosyaDegeri,gunlukmetinDegeri)

Ayrıca sınıf içindeki metodları çağırırken
self.metodAdi()
veya parametreli hali;
self.metodAdi(Deger1,Deger2)
şeklinde çağırmalısınız.


İsterseniz şu bağlantıyı bir okuyun. __init__ ne işe yarar, metodlar nasıl çağrılır ve nasıl değer gönderilir, sınıf içindeki global değişkenler nasıl tanımlanır(Örn:self.degisken="degisken degeri").
http://www.istihza.com/py2/nesne.html
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

Elysion

#2
Okuyup düzelteceğim inşallah en kısa sürede ilgi için teşekkürler hocam.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 14 Mart 2014 - 23:45:39

Hocam şu hale getirdim ; #-*- coding: utf-8 -*-
#!/usr/bin/env python
__author__ = 'elysion'
import time
class sevgiligunluk:
    def __init__(self):
        self.karsilama = input('Günlüğüne Hoşgeldin,Günlük Yazmak için "Y" okumak için "O" Çıkmak için "Ç" yi tuşlayın ')
        if self.karsilama == "o" or "o":
            self.gunlukoku()
        if self.karsilama=="y"or"y":
            self.gunlukyaz()
        if self.karsilama=="ç"or"Ç":
            self.cik()
        else:
            print("Hatalı Giriş Yaptınız Tekrar deneyiniz")
    def gunlukyaz(self):
        try:
            self.zaman = time.strftime("%d.%m.%Y")
            self.gunlukdosya = open(self.zaman, "w")
            self.gunlukmetni = str(input("Hadi Bugun neler oldu anlat bana ?"))
            self.gunlukdosya.write(gunluk)
            self.gunlukdosya.close()
            print("Günlük Başarıyla yazıldı.")
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
        finally:
            self.gunlukdosya.close()
    def gunlukoku(self):
        try:
            trhal=input("Okumak istediğiniz günü lütfen '"+zaman+"' şeklinde yazınız")
            self.gunlukokuma=open(self.trhal,"r")
            print(self.gunlukokuma.read())
            self.gunlukokuma.close()
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !")
    def cik(self):
        print("   ", 'Yarın tekrar görüşmek üzere Mutlu Ol !',"   ")
        quit()
sevgiligunluk()


Fakat örneğin "y"'yi tuşladığımda ve ya "Ç"yi tekrar gunluk ya gidiyor ve şöyle bir hata alıyorum ;

Alıntı Yapraceback (most recent call last):
  File "/home/elysion/Desktop/PythonApp/oopgunluk.py", line 39, in <module>
    sevgiligunluk()
  File "/home/elysion/Desktop/PythonApp/oopgunluk.py", line 9, in __init__
    self.gunlukoku()
  File "/home/elysion/Desktop/PythonApp/oopgunluk.py", line 30, in gunlukoku
    trhal=input("Okumak istediğiniz günü lütfen '"+zaman+"' şeklinde yazınız")
NameError: global name 'zaman' is not defined
Özü gülmeyeni yüzü güler mi ?

empax

#3
Çalışır hali alttaki gibi olacak. Kodları karşılaştırırsanız hatalarınızı göreceksiniz.
Eğer bir değişkeni sadece tanımladığınız o metot içinde kullanacaksanız self kullanmanıza gerek yok, ancak o değişkeni birden fazla metot içinde kullanacaksanız self.degisken seklinde tanımlayın. Bu durumda bu değişkene o sınıftaki tüm metotlar ulaşıp değerini değiştirilebilir.
Kolay gelsin. :)


#-*- coding: utf-8 -*-
#!/usr/bin/env python
__author__ = 'elysion'
import time
class sevgiligunluk:
    def __init__(self):
        karsilama = raw_input('Günlüğüne Hoşgeldin,Günlük Yazmak için "Y" okumak için "O" Çıkmak için "Ç" yi tuşlayın ')
        if karsilama == "o" or karsilama == "O":
            self.gunlukoku()
        elif karsilama=="y" or karsilama=="Y":
            self.gunlukyaz()
        elif karsilama=="ç" or karsilama=="Ç":
            self.cik()
        else:
            print("Hatalı Giriş Yaptınız Tekrar deneyiniz")
            sevgiligunluk()
    def gunlukyaz(self):
        try:
            zaman = time.strftime("%d.%m.%Y")
            gunlukdosya = open(zaman, "w")
            gunlukmetni = str(raw_input("Hadi Bugun neler oldu anlat bana ?\n"))
            gunlukdosya.write(gunlukmetni)
            gunlukdosya.close()
            print("Günlük Başarıyla yazıldı.")
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !\n")
        sevgiligunluk()
           
    def gunlukoku(self):
        try:
            zaman = time.strftime("%d.%m.%Y")
            trhal=raw_input("Okumak istediğiniz günü lütfen '"+zaman+"' şeklinde yazınız: ")
            gunlukokuma=open(trhal,"r")
            print(gunlukokuma.read())
            gunlukokuma.close()
        except IOError:
            print("Eyvah!!Lütfen Herşeyi Kontrol Edip Tekrar Deneyiniz !\n")
        sevgiligunluk()
    def cik(self):
        print("\tYarın tekrar görüşmek üzere Mutlu Ol !")
        quit()
sevgiligunluk()

بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|

Elysion

Hemen incelikyorum elinize sağlık teşekkür ederim hocam.
Özü gülmeyeni yüzü güler mi ?

empax

Alıntı yapılan: Elysionhocam
Estağfurullah :)
Ama verdiğim kaynağı tavsiye ederim, bir çok farklı başlık da mevcut.
Kolay gelsin. :)
بسم الله الرحمن الرحيم
|ACEMİLER İÇİN İLK DURAK|Çözüldü|Kod etiketi|