Python 3 hafızada veriyi tutup kayıt oluşturma

Merhabalar,

Aşağıda belirttiğim kodun çıktısına
kullanıcan veri alarak isim soyisim ve yas giriliyor.

Ayrı ayrı input oluşturuyorum
ilk olarak kullanıcı ad değerini giriyor ekrana çıktı veriyor.
sorum tam olarak ; soyad kısmını girdiğinde ad kısmını hafızada tutarak çıktı vermesini istiyorum.
nasıl yapabilirim. ?

def kayit(ad="bilgi yok",soyad="bilgi yok",yas="bilgi yok\n"):
    print("ad:{}\nsoyad:{}\nyas:{}".format(ad,soyad,yas,))
kayit(ad=input("isim giriniz:\n"))

kayit(soyad=input("soyad giriniz:\n"))

kayit(yas=input("yas giriniz:"))

Merhaba,

Fonksiyonu 3 kere çağırmanıza gerek yok, parametreleri doldurmanız yeterli.

def kayit(ad="bilgi yok", soyad="bilgi yok", yas="bilgi yok"):
    print("ad:{}\nsoyad:{}\nyas:{}".format(ad,soyad,yas,))
	
	
kayit(
	ad=input("isim giriniz:\n"),
	soyad=input("soyad giriniz:\n"),
	yas=input("yas giriniz:\n")
	
)
1 Beğeni

Teşekkürler peki uzun yoldan yapıp 3 kez yaptım,
nasıl ilk işlemi hafıza tutup devamını girebilirim ?

Böyle bir durumda fonksiyon yerine sınıf kullanmanız daha uygun olur.

class Kayit:
	def __init__(self, ad="bilgi yok", soyad="bilgi yok", yas="bilgi yok"):
		self.ad = ad
		self.soyad = soyad
		self.yas = yas
		
	def __str__(self):
		return f"Ad: {self.ad}, Soyad: {self.soyad}, Yas: {self.yas}"

	
kayit = Kayit()
kayit.ad = input("isim giriniz:\n")
kayit.soyad = input("soyad giriniz:\n")
kayit.yas = input("yas giriniz:\n")
print(kayit)

İstediğinizi yapabilmek için kodlarınızda bazı değişiklikler yapmak gerekiyor. Bir fonksiyon sonlandığında, fonksiyona verilen parametrelerin değerleri global alanda yer alan değişkenlere aktarılmadığı zaman hafızadan silinir. Parametrelerin tuttukları değerler kaybolmadan önce onları değişkenlere aktarmanız gerekiyor. Aşağıdaki gibi global değişkenler kullanabilirsiniz.

ad_, soyad_, yas_ = "", "", ""


def kayit(ad="" ,soyad="", yas=""):
	global ad_, soyad_, yas_
	if ad: ad_ = ad
	if soyad: soyad_ = soyad
	if yas: yas_ = yas
	print("ad:{}\nsoyad:{}\nyas:{}".format(ad_, soyad_, yas_))


kayit(ad=input("isim giriniz:\n"))

kayit(soyad=input("soyad giriniz:\n"))

kayit(yas=input("yas giriniz:"))

tipi str olan 3 adet değişken tanımlamak yerine, tipi dict olan 1 adet değişken de tanımlayabilirsiniz. Fonksiyona verilen parametreler, sözlüğün ilgili anahtarlarının değerleri olarak atanırlar.

kayit_bilgisi = {}


def kayit(ad="",soyad="",yas=""):
	if ad: kayit_bilgisi["Ad"] = ad
	if soyad: kayit_bilgisi["Soyad"] = soyad
	if yas: kayit_bilgisi["Yaş"] = yas
	print("\n".join(f"{k}: {v}" for k, v in kayit_bilgisi.items()))


kayit(ad=input("isim giriniz:\n"))

kayit(soyad=input("soyad giriniz:\n"))

kayit(yas=input("yas giriniz:"))
1 Beğeni

cevap fazlasıyla yeterli oldu.
çok teşekkür ederim.
‘‘sınıf’’ kullanımının gerekliliğini bir kez daha öğrenmiş oldum.