Çözüldü Datetime modülü kullanımı

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Ark_Us

Kilopat
Katılım
7 Nisan 2017
Mesajlar
853
Makaleler
1
Çözümler
7
Herkese merhaba, ben bu modülü Visual Studio code nasıl kullanabilirim, detaylı biçimde anlatabilir misiniz? Hiçbir bilgim olmadığı bir konu.
 
Çözüm
TimeDelta'ya ihtiyacınız var gibi. Aracın trafiğe çıkış tarihi üzerine 1 yıl (365 gün) ekleyerek bakım tarihlerini bulabilirsiniz.
Python:
from datetime import datetime, timedelta
birinciBakim = tafigeCikisTarihi + timedelta(days = 365)

bunu bir for döngüsü içerisinde alıp timedelta(days = ((i+1) * 365)) şeklinde de kullanabilirsiniz. Böylece neredeyse aynı kod satırını 3 kez yazmamış olursunuz.
import dediğiniz zaman kütüphanedeki değil yazmaya çalıştığınız Scripti import etmeye çalışıyor. Farklı bir isim verin.
ve sağlam bir hata yaptım gitdim yanlışıkla en iyi cevaba tıkladım :D
happy little accidends.png


Bizler hata yapmayız. Sadece mutlu küçük kazalar. -Bob Ross
 
Son düzenleme:
İmport dediğiniz zaman kütüphanedeki değil yazmaya çalıştığınız scripti import etmeye çalışıyor. Farklı bir isim verin.

Eki Görüntüle 624732

Bizler hata yapmayız. Sadece mutlu küçük kazalar. -Bob ross.

İmport datetime yazıyorum sonra bir alt satıra geçiyorum başka nasıl yazabilirimki birda ufak bir yanlış anlaşılma oldu herade en iyi cevap diye yazıyordu bende merakımdan basmışdım sorun tam olarak çözülmedigi halde çözüldü dediğim için bu yüzdan saglam hata yaptım dediydim.
İmport datetime yazıyorum sonra bir alt satıra geçiyorum başka nasıl yazabilirimki birda ufak bir yanlış anlaşılma oldu herade en iyi cevap diye yazıyordu bende merakımdan basmışdım sorun tam olarak çözülmedigi halde çözüldü dediğim için bu yüzdan saglam hata yaptım dediydim.

Tekrardan merhaba datetime çalıştırdım ama şöyle bir durum var sanki bazi şeyler eksik mesela .now() diye metot yok.
 
Son düzenleme:
İmport datetime yazıyorum sonra bir alt satıra geçiyorum başka nasıl yazabilirimki birda ufak bir yanlış anlaşılma oldu herade en iyi cevap diye yazıyordu bende merakımdan basmışdım sorun tam olarak çözülmedigi halde çözüldü dediğim için bu yüzdan saglam hata yaptım dediydim.


Tekrardan merhaba datetime çalıştırdım ama şöyle bir durum var sanki bazi şeyler eksik mesela .now() diye metot yok.
Python'u bilmeme rağmen sevmem. Yavaş olması, Tab tabanlı olması(a.k.a Bracket kullanmaması), isimlendirme sisteminin berbat ötesi olması gibi sebeplerim var.
Örnek;
datetime.py dosyasının içerisinde datetime adlı bir class vardır.

from datetime import datetime dediğiniz zaman. datetime dosyası içerisindeki datetime class'ını import eder. Ancak datetime dosyasının içerisinde sadece datetime class'ı yoktur. Bazı kullanışlı Static methodlar da vardır. (Örn: date(y,m,d), now(), today()...) Bu methodları kullanabilmek için ayrıca datetime'ı import etmeniz gerekiyor. İsmi karmaşası yaratması için import datetime as dt gibi bir isim vererek dt(çakışma yapmayan her hangi başka bir isim de olabilir) datetime objesi tanımlıyoruz.

Bilmece gibi geldiğinin ve bazı terimleri anlamadığınız farkındayım ancak durum bu.

Python:
from datetime import datetime, timedelta
import datetime as dt
piDay = dt.date(2020, 3, 14)
tarih = dt.datetime.now()
print('Bugun: ', tarih)
print(piDay)
nextTenPiDays = []
for i in range(10):
    nextTenPiDays.append(piDay + timedelta(days = ((i + 1) * 365)))
for i in nextTenPiDays:
    print(i.strftime('Pi: %d %b %Y'))
@Ark_Us
 
Son düzenleme:
TimeDelta'ya ihtiyacınız var gibi. Aracın trafiğe çıkış tarihi üzerine 1 yıl (365 gün) ekleyerek bakım tarihlerini bulabilirsiniz.
Python:
from datetime import datetime, timedelta.
birinciBakim = tafigeCikisTarihi + timedelta(days = 365)

Bunu bir for döngüsü içerisinde alıp timedelta(days = ((i+1) * 365)) şeklinde de kullanabilirsiniz. Böylece neredeyse aynı kod satırını 3 kez yazmamış olursunuz.

Son atığınız biraz daha kafa karıştırdı desem yeridir datetime aktif ettim orada bir sorun yok ama soruyu ne yazık ki yapamadım aslında cevabı varda kendimi geliştirmek için cevaba bakmıyorum sizden ricam öncelikle nasıl başlamam gerek.
 
Son atığınız biraz daha kafa karıştırdı desem yeridir datetime aktif ettim orada bir sorun yok ama soruyu ne yazık ki yapamadım aslında cevabı varda kendimi geliştirmek için cevaba bakmıyorum sizden ricam öncelikle nasıl başlamam gerek.
Denemeler yapmak ve karşılaşılan hataların üzerine gitmek.
Benim normalde Yorumlanan diller ile işim olmazdı. Temel işleri yapacak kadar biliyordum sadece.
Raspberry Pi üzerinde bir proje geliştirmem gerekti. Dosya erişimi(bmp yazma/okuma ve işleme), Bluetooth (BlueZ), TCP/IP, RPi.GPIO, I2C, MultiThreading gibi konu başlıklarını kapsayan bir proje.

C ile de yapılabilecek bir program olmasına rağmen Bluetooth ve I2C üzerine C ile yapılmış yeterli örnek olmadığı için mecbur Python ile yazmam gerekti.
Yaparken istemeyeceğim kadar detay bilgi öğrenmiş oldum.
MultiThread, IO işlemleri gibi konuları Java ve C# üzerinde önceden çalışmış olduğum için sadece Python üzerinden nasıl işlediğine bakmam yetmişti.

Problem çözme odaklı ilerlersen tecrübe ederek öğrenmiş olursun.
Dosyanın adının "datetime.py" mı? diye sormamın sebebi benzer hatayı benim de önceden yapmış olmam. (Math.py)
 
Python:
# 1- kullanıcıdan isim yaş ve eğitim bilgilerini isteyip ehliyet alabilme
#    durumunu kontrol ediniz. Ehliyet alma koşulu en az 18 ve eğitim durumu
#    lise veya üniversite olmalıdır

# eğitimdurum = ("lise") or ("üniversite")

# name = input("isminizi giriniz ")
# age = int(input("yasinizi girin "))
# school = input("egitim durmunuz nedir ")

# if age < 18:
#     print("ehliyet için yaş yetersiz")
# elif school == eğitimdurum:
#     print("ehliyet alınabilir")
# else:
#     print("eğitim yetersiz: ")


# 2- bir öğrecinin 2 yazılı bir sözlü natunu alıp hesaplanan ortalamaya göre
#    not aralıgına karşılık gelen not bilgisini yazdırın
#    0 - 24 => 0
#    25 - 44 => 1
#    45 - 54 => 2
#    55 - 69 => 3
#    70 - 84 => 4
#    85 - 100 => 5



# yazılı1 = int(input("yazılı1 giriniz: " ))
# yazılı2 = int(input("yazılı2 giriniz: "))
# sozlu = int(input("sözlü girniz: "))

# result = (yazılı1 + yazılı2 + sozlu) //3

# if result < 24:
#     print("notunuz 0")
# if result > 25:
#     if result < 44:
#         print("notunuz 1")
# if result > 45:
#     if result < 54:
#         print("notunuz 2")
# if result > 55:
#     if result < 69:
#         print("notunuz 3")
# if result > 70:
#     if result < 84:
#         print("notunuz 4")
# if result > 85:
#     if result >= 100:
#         print("notunuz 5")

# 3- trafige çıkış tarihi alınan bir aracın servis zamanını aşşdaki
#    bilgilere göre hesaplayınız
#    1. Bakım => 1. yıl
#    2. Bakım => 2. yıl
#    3. Bakım => 3. yıl
#    ** Süre hesabını alınan gün ay yıl bilgisine göre gün bazlı hesaplayınız
#    *** datetime modülü kullanmanız gerekiyor

from datetime import datetime
Denemeler yapmak ve karşılaşılan hataların üzerine gitmek.
Benim normalde yorumlanan diller ile işim olmazdı. Temel işleri yapacak kadar biliyordum sadece.
Raspberry Pi üzerinde bir proje geliştirmem gerekti. Dosya erişimi(bmp yazma/okuma ve işleme), Bluetooth (bluez), TCP/IP, rpi. Gpıo, I2C, multithreading gibi konu başlıklarını kapsayan bir proje.

C ile de yapılabilecek bir program olmasına rağmen Bluetooth ve I2C üzerine C ile yapılmış yeterli örnek olmadığı için mecbur Python ile yazmam gerekti.
Yaparken istemeyeceğim kadar detay bilgi öğrenmiş oldum.
Multithread, IO işlemleri gibi konuları Java ve C# üzerinde önceden çalışmış olduğum için sadece Python üzerinden nasıl işlediğine bakmam yetmişti.

Problem çözme odaklı ilerlersen tecrübe ederek öğrenmiş olursun.
Dosyanın adının "datetime.py" mı? Diye sormamın sebebi benzer hatayı benim de önceden yapmış olmam. (Math.py)

Cevabın için tekrardan teşekkürler ama birkaçgündür uğraşıyorum yapabildiğim söylenemez 3 tane sounun bu sonuncusu 3 sorudan 2'sini yaptım ama bu beni gerçekden uğraştırdı.
 
Python:
# 1- kullanıcıdan isim yaş ve eğitim bilgilerini isteyip ehliyet alabilme
#    durumunu kontrol ediniz. Ehliyet alma koşulu en az 18 ve eğitim durumu
#    lise veya üniversite olmalıdır

# eğitimdurum = ("lise") or ("üniversite")

# name = input("isminizi giriniz ")
# age = int(input("yasinizi girin "))
# school = input("egitim durmunuz nedir ")

# if age < 18:
#     print("ehliyet için yaş yetersiz")
# elif school == eğitimdurum:
#     print("ehliyet alınabilir")
# else:
#     print("eğitim yetersiz: ")


# 2- bir öğrecinin 2 yazılı bir sözlü natunu alıp hesaplanan ortalamaya göre
#    not aralıgına karşılık gelen not bilgisini yazdırın
#    0 - 24 => 0
#    25 - 44 => 1
#    45 - 54 => 2
#    55 - 69 => 3
#    70 - 84 => 4
#    85 - 100 => 5



# yazılı1 = int(input("yazılı1 giriniz: " ))
# yazılı2 = int(input("yazılı2 giriniz: "))
# sozlu = int(input("sözlü girniz: "))

# result = (yazılı1 + yazılı2 + sozlu) //3

# if result < 24:
#     print("notunuz 0")
# if result > 25:
#     if result < 44:
#         print("notunuz 1")
# if result > 45:
#     if result < 54:
#         print("notunuz 2")
# if result > 55:
#     if result < 69:
#         print("notunuz 3")
# if result > 70:
#     if result < 84:
#         print("notunuz 4")
# if result > 85:
#     if result >= 100:
#         print("notunuz 5")

# 3- trafige çıkış tarihi alınan bir aracın servis zamanını aşşdaki
#    bilgilere göre hesaplayınız
#    1. Bakım => 1. yıl
#    2. Bakım => 2. yıl
#    3. Bakım => 3. yıl
#    ** Süre hesabını alınan gün ay yıl bilgisine göre gün bazlı hesaplayınız
#    *** datetime modülü kullanmanız gerekiyor

from datetime import datetime


Cevabın için tekrardan teşekkürler ama birkaçgündür uğraşıyorum yapabildiğim söylenemez 3 tane sounun bu sonuncusu 3 sorudan 2'sini yaptım ama bu beni gerçekden uğraştırdı.
Her satırı tek tek '#'lemek yerine; """ ile """ arasında kalan kısım C dillerindeki /* */ gibi comment olarak yorumlanır.

Çoklu durumda if içerisinde if yerine elif kullanmak hem kodu sade kılar hem de beklenmedik bugları önlemiş olursunuz

Python:
if number >= 0 and number < 30:
    foo()
elif number >= 30 and number < 65:
    bar()
elif number >= 65 and number < 100:
    baz()
 
Son düzenleme:
Her satırı tek tek '#'lemek yerine; """ ile """ arasında kalan kısım C dillerindeki /* */ gibi comment olarak yorumlanır.

Çoklu durumda if içerisinde if yerine elif kullanmak hem kodu sade kılar hem de beklenmedik bugları önlemiş olursunuz.

Python:
if number >= 0 and number < 30:
foo()
elif number >= 30 and number < 65:
bar()
elif number >= 65 and number < 100:
baz()

Yalnız onu denedim nedense çalışmamışdı bende böyle yapmak durumunda kaldım tabii her satıra # eklemek çok zor olmuyor crtl + a tuşunu basıp oradan crtl k C diyorum hepsini yorum satırı yapıyor tek zorlandığım kısım soru 3 oldu.
 
Yalnız onu denedim nedense çalışmamışdı ben de böyle yapmak durumunda kaldım tabii her satıra # eklemek çok zor olmuyor crtl + a tuşunu basıp oradan crtl k C diyorum hepsini yorum satırı yapıyor tek zorlandığım kısım soru 3 oldu.
Python:
if result < 24:
    print("notunuz 0")
if result > 25:
    if result < 44:
        print("notunuz 1")
if result > 45:
    if result < 54:
        print("notunuz 2")
if result > 55:
    if result < 69:
        print("notunuz 3")
if result > 70:
    if result < 84:
        print("notunuz 4")
if result > 85:
    if result >= 100:
        print("notunuz 5")

Yazdığınız koddaki hatalar;
  • Eşit değerler tanımsız. Örn 45 alan birisi; 44'den küçük ve 45'ten de büyük olmadığı için hiç bir şey yazdırmaz.
  • son durumda >= 100 yerine <= 100 olmalı ki 100'den büyük değer girişinde de sonuç üretmesin.
Python:
if result >= 0 and result <= 24:
    print('notunuz 0')
elif result >= 25 and  result <= 44:
    print('notunuz 1')
elif result >= 45 and result <= 54:
    print('notunuz 2')
# gibi.
yaparsanız sorunsuz çalışacaktır.
 
Son düzenleme:
Yalnız onu denedim nedense çalışmamışdı bende böyle yapmak durumunda kaldım tabii her satıra # eklemek çok zor olmuyor crtl + a tuşunu basıp oradan crtl k C diyorum hepsini yorum satırı yapıyor tek zorlandığım kısım soru 3 oldu.

Not 2 soruyu bu şekilde yapmamışdım çok benzer bir şey yaptım öğrenmem iyi oldu sizin dediğiniz şekilde düzeltirim.
Python:
if result < 24:
print("notunuz 0")
if result > 25:
if result < 44:
print("notunuz 1")
if result > 45:
if result < 54:
print("notunuz 2")
if result > 55:
if result < 69:
print("notunuz 3")
if result > 70:
if result < 84:
print("notunuz 4")
if result > 85:
if result >= 100:
print("notunuz 5")

Yazdığınız koddaki hatalar;
  • Eşit değerler tanımsız. Örneğin 45 alan birisi; 44'den küçük ve 45'ten de büyük olmadığı için hiçbir şey yazdırmaz.
  • Son durumda >= 100 yerine <= 100 olmalı ki 100'den büyük değer girişinde de sonuç üretmesin.
Python:
if result >= 0 and result <= 24:
print('notunuz 0')
elif result >= 25 and result <= 44:
print('notunuz 1')
elif result >= 45 and result <= 54:
print('notunuz 2')
# gibi.
Yaparsanız sorunsuz çalışacaktır.

Tekrardan merhaba sonunda verdiğiniz bilgiyi alıp böyle bir şey ortaya çıkartamyı başardım ama böyle bir hata geldi sanırım tarihi yanlış yazıyorum.
Python:
from datetime import datetime , timedelta

araçtrafıgeçıkma = int(input("aracın trafige çıkış tarihi: "))

bakım1 = araçtrafıgeçıkma + timedelta(days = 365)
bakım2 = araçtrafıgeçıkma + timedelta(days = 365)*2
bakım3 = araçtrafıgeçıkma + timedelta(days = 365)*3
Not 2 soruyu bu şekilde yapmamışdım çok benzer bir şey yaptım öğrenmem iyi oldu sizin dediğiniz şekilde düzeltirim.


Tekrardan merhaba sonunda verdiğiniz bilgiyi alıp böyle bir şey ortaya çıkartamyı başardım ama böyle bir hata geldi sanırım tarihi yanlış yazıyorum.
Python:
from datetime import datetime , timedelta

araçtrafıgeçıkma = int(input("aracın trafige çıkış tarihi: "))

bakım1 = araçtrafıgeçıkma + timedelta(days = 365)
bakım2 = araçtrafıgeçıkma + timedelta(days = 365)*2
bakım3 = araçtrafıgeçıkma + timedelta(days = 365)*3

araçtrafıgeçıkma = int(input("aracın trafige çıkış tarihi: "))
ValueError: invalid literal for int() with base 10: '2018/8/1'
 
Son düzenleme:

Geri
Yukarı