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
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)
Ç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
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.
{ } = 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.
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ı
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.
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.
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.
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)
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ı.