Gün-Ay-Yıl Hesaplama Programı

Merhaba arkadaşlar,
gün-ay-yıl hesaplama programı yapmak istiyorum. Kullanıcıdan tarih bilgisi alamıyorum. Aşağıdaki gibi başladım.

from datetime import date

date = date.today()
print(date)

year = int(input('Enter a year '))
month = int(input('Enter a month '))
day = int(input('Enter a day '))
date1 = datetime.date(year, month, day)

NameError hatası alıyorum. Ayrıca başka denediğim kodlarda da sıkıntı oldu. Nasıl bir düzeltme yapmam lazım.
En son şöyle yaptım. Yine aynı hata.

from datetime import date

curr_date = date.today()
print(curr_date)

year = int(input('Enter a year '))
month = int(input('Enter a month '))
day = int(input('Enter a day '))
date1 = datetime.date(year, month, day)
print (curr_date - date1)

Hata mesajım:

line 9, in
date1 = datetime.date(year, month, day)
NameError: name ‘datetime’ is not defined

from datetime import date

dediğiniz için.
date fonksiyonu olduğu gibi içeri aktarıldı
yani tekrardan datetime.date() gibi bi kullanım yapmanıza gerek yok.

doğru kod

from datetime import date

curr_date = date.today()
print(curr_date)

year = int(input('Enter a year '))
month = int(input('Enter a month '))
day = int(input('Enter a day '))
date1 = date(year, month, day)
print(curr_date - date1)

1 Beğeni

Çok teşekkür ederim bazen çok basit bir şey oyalayıp duruyor. Burada print cevabı gün olarak veriyor. Sonucu yıl, ay, gün vermesi için ne yapmam lazım? Cevap olarak binlerce gün çıkıyor.

2020-03-27
Enter a year 1920
Enter a month 04
Enter a day 23
36498 days, 0:00:00
1 Beğeni

formatlamayı deneyebilirsin

print(“Gün = {} | Ay = {} | Yıl = {}”.format(day,month,year))

ya da

print("{}.{}.{}".format(day,month,year))

formatlamayı deneyebilirsin

print(“Gün = {} | Ay = {} | Yıl = {}”.format(day,month,year))

ya da

print(“{}.{}.{}”.format(day,month,year))

1 Beğeni

Ayrıca programı kullanırken kullanıcıdan alman gereken tarih değerleri eğer anlık değerler ise yanı programı kullandığı gün dışında bir değer girmesi gerekmiyorsa local tarih gerekiyorsa datetime ı şu şekilde kullanabilirsin

form datetime import datetime

yerel = datetime.now()

hangi_sene = yerel.year #yerel tarihteki yılı verir
hangi_ay = yerel.month #yerel tarihteki ayı verir
hangi_gun = yerel.day #yerel tarihteki günü verir

print(hangi_sene)
print(hangi_ay)
print(hangi_gun)

print("{}.{}.{}".format(hangi_sene,hangi_ay,hangi_gun)) #tek bir satırda sana tarih olarak verir. format fonksiyonu ile {} içerisine verilen değerleri gönderiyoruz.
1 Beğeni

Hepinize çok teşekkürler.

kendi yazdığım kodda print şöyleydi.

print (curr_date - date1)

buna göre ayrı bir değişken mi oluşturayım?

date2=curr_date - date1
print(date2)

format ile nasıl birleştireceğim?

print(date2.format.(year,month,day))

olmadı. Syntax hatası verdi.

Format fonksiyonu şu şekilde kullanılıyor.

{ } = bunlar süslü parantezlerdir. format fonksiyonu içerisine verilen değerler sırasıyla süslü parantez { } gördüğü yere yazılır.

Ayrıca süslü parantezler daima " " ya da ’ ’ tırnak işaretleri arasında yer almalıdır. Bu işaretlerin içerisinde yer almayan süslü parantezler ve format fonksiyonu çalışmayacaktır. Açıklamalı örnekler vereyim.

user_name = “satemsoftware”

user_name değişkenine yolladığım string değerini format foksiyonu ile konsola print() fonksiyonunu kullanarak yazdırmak istediğim de şunu yapmam gerekiyor.

  1. adım print fonksiyonunu oluştur = print("")
  2. adım print fonksiyonu içerisine süslü parantezlerini yerleştir = print(" {} ")
  3. adım print fonksiyonu içerisine yazdırmak istediğimiz değişkeni format ile bildir. = print(" {} ".format(user_name))

print i oluşturduktan sonra tırnak işaretleri arasına aldığımız süslü parantezlerin içerisine gönderilecek değerin .format() ile çalışabilmesi için tırnak işaretinden sonra .format() olarak yazılmalıdır

Sizin yaptığınız kodu yazarsak şöyle oluşuyor yapısı

date2 = curr_date - date1
print("{}".format(date2))

konsol üzerine print ile yazdırma işlemi yapacağınız yapılar veya değişkenler bir tane ise .format() kullanmanıza gerek yoktur. print() içerisine tırnak işaretleri kullanmadan değişken ismini yazarak çalıştırmanız daha rahat olacaktır.

1 Beğeni

Açıklayıcı anlatımınız için teşekkürler. Ancak sonuç yine toplam gün olarak veriyor.

from datetime import date

curr_date = date.today()
print(curr_date)

year = int(input('Enter a year '))
month = int(input('Enter a month '))
day = int(input('Enter a day '))
date1 = date(year, month, day)
date2 = curr_date - date1
print("{}".format(date2))

Sonuç ise şöyle:

2020-03-27
Enter a year 1920
Enter a month 4
Enter a day 23
36498 days, 0:00:00

Print içine format(year,month,day) bildirmemiz gerekiyor galiba.

1 Beğeni

date2 yazan yere date1 yazarsan istediğin sonucu alabiliyorsun

1 Beğeni

date2 yazan yere date1 yazarsan istediğin sonucu alabiliyorsun

Doğru alabiliyorum ama benim istediğim kullanıcının girdiği eski bir tarih(örneğin,doğum günü) ile bugün arasındaki farkın ekrana yıl-ay-gün ya da gün -ay-yıl şekilinde yazdırılması.

curr_date - date1 işleminin sonucu bir timedelta nesnesi döndürüyor, yani “zaman farkı”. Bu nesne de zamanı days niteliği ile tutuyor, çünkü burada uzunluğu sabit olan en büyük zaman birimi gün. Bir yıl 365 veya 366 gün olabilir, bir ay da 28, 29, 30 veya 31 gün olabilir. Bu yüzden bir çözüm bulamadınız, ne istediğinizi bilmiyorsunuz. İstediğiniz şeyi daha iyi tanımlarsanız yardım edebiliriz. Mesela bir ayı 30, bir yılı da 360 gün üzerinden hesaplayacaksanız çözüm kolay olur.

Bu yüzden bir çözüm bulamadınız, ne istediğinizi bilmiyorsunuz. İstediğiniz şeyi daha iyi tanımlarsanız yardım edebiliriz.

Benim istediğim örneğin okullarda ödev olurdu; Cumhuriyet ilan edileli kaç yıl oldu gibi sorular…Ama soruyu gün-ay-yıl şeklinde sorulduğunda ona göre hesap yaparsın. Ben de kullanıcıdan bilgi alarak buna benzer bir program yazmak istedim. Programın şöyle bir sonuç vermesini istiyorum: Siz doğalı 125 gün 6 ay 32 yıl oldu gibi bir çıktı istiyorum. Bugünkü tarihren eski bir tarihi çıkarıp ekrana gün-ay-yıl veya yıl-ay-gün olarak yazdırmak istiyorum.

Nasıl yani, gün nasıl 31’i geçiyor ki?


Peki ben bir soru sormak istiyorum, program 13/4/2000 ile 27/3/2020 girdileri sonucunda aradaki zaman için ne vermeli?

Yoksa siz şunun gibi bir şey mi istiyorsunuz?

from datetime import date

curr_date = date.today()
print(curr_date)

year = int(input('Enter a year '))
month = int(input('Enter a month '))
day = int(input('Enter a day '))

print(curr_date.year - year, curr_date.month - month, curr_date.day - day)

Öyle bir şey istemiyorum hocam, teşekkürler.

Ama hala ne istediğinizi tanımlayamadınız (ya da ben anlayamadım), birkaç girdi ve çıktı örneği verir misiniz.

Siz doğalı kaç gün kaç ay kaç yıl, hatta kaç saat oldu hocam? Bunu hesaplayan bir program. Bunun için önce kişinin bir takım bilgileri girmesi gerekir. Ona göre de programın şimdiki tarihten girilen bilgileri çıkarıp sonucu ekrana yazdırması.

Buradaki eksik negatif sayılar çıkabilmesi mi?

1 Beğeni