Yazmakta olduğum bir projede ; tanıttığım class içerisinde bir data structure da tanıtmam gerek bu data structure içerisinde birkaç kullanıcını Kullanıcı Adı , Şifresi , Ve Parasını tanıtmam gerekiyor. Sonrasında oluşturduğum giriş kısmında kullanıcıda raw_input ile Kullanıcı adı ve Şifresi istemem gerekiyor Eğer kullanıcı doğru giriş gerçekleştirirse doğru kullanıcının nesnesini oluşturmak istiyorum. Bunu nasıl yapabilirim yardımcı olursanız çok sevinirim
Dictionary icinde dictionary tutman lazim. Kullanici adini kullanici dictionary’siyle iliskilendiren 1. dictionary, adsifre ve para key’lerini kullanici adi, sifresi ve parasiyla iliskilendiren 2. dictionary. 1’den 1 tane olacak, 2’den kullanici sayisi kadar.
Ikinci dictionary yerine bir class da kullanabilirsin, key’ler (sifre, para, ad) sabit olacagi icin. (adi tutmak zorunda da degilsin, ilk dictionary’den gelirken kullanilmasi yetebilir.)
Daha açıklayıcı olmak gerekirse şöyle yazayım ; bu yazdığım kodun devamında eğer kullanıcı doğru isim ve sifreyi girerse oluşturulan objenin kullanıcı adı ve şifresi oluşturduğum dictionarydekiyle aynı ve parasının 0 olarak başlaması gerekmekte , bunu nasıl yapabilirim ?
class kullanici():
def init(self,kullaniiadi,kullanicisifresi,kullaniciborcu):
self.kullaniciadi=kullaniiadi
self.kullanicisifresi=kullanicisifresi
self.kullaniciborcu=kullaniciborcu
Bu yazdigin kodun devaminda kullanici dogru isim ve sifreyi girerse herhangi bir sey yapmak istiyorsan, oncelikle bu yazdigin kodun devaminda kullanicinin isim ve sifresini alman gerek. Kullanici isminin olup olmadigina bakip, varsa sifresini alip, alirsan girilen sifreyle karsilastirman lazim. Her sey yerinde ise yeni bir kullanici objesi yaratabilirsin. kullanici sinifina para attribute’u ekleyip __init__'te 0’a esitleyebilirsin.
Kullanıcının isim ve şifre sorduğu kısımları da yazdım fakat sizin için daha da karışık olmaması adına buraya eklememiştim ; daha detaylı halini ekliyorum , düzeltmemde yardımcı olursanız sevinirim
class kullanici():
def init(self,kullaniiadi,kullanicisifresi,kullaniciborcu):
self.kullaniciadi=kullaniiadi
self.kullanicisifresi=kullanicisifresi
self.kullaniciborcu=kullaniciborcu
class paraEkleme(kullanici):
def init(self,kullaniiadi,kullanicisifresi,kullaniciborcu):
self.kullaniciadi=kullaniiadi
self.kullanicisifresi=kullanicisifresi
self.kullaniciborcu=kullaniciborcu
def borcekleme(self):
a=input("Ne kadar borc eklenecek ? ")
self.kullaniciborcu=self.kullaniciborcu+a
while True:
kullanici_adi=raw_input(“Kullanici adinizi giriniz”)
kullanici_sifresi=raw_input(“Kullanici Sifresi Giriniz”)
if kullanici_adi in list and kullanici_sifresi==borclular[kullanici_adi][“Sifresi”]:
yenikullanıcı=kullanici_adi(kullanici_adi,kullanici_sifresi,kullanıcıborcu)
self.para yerin self.kullaniciborcu ibaresini kullanmayı tercih ettim, ayrıca kod’un çalışmadığının farkındayım nasıl çalıştırabilirim diye sormuştum. Teşekkürler…
class kullanici():
def __init__(self,kullaniiadi,kullanicisifresi,kullaniciborcu):
self.kullaniciadi=kullaniiadi
self.kullanicisifresi=kullanicisifresi
self.kullaniciborcu=kullaniciborcu
kullaniciborcu=0
borclular={"Tom":{"Sifresi":"tom123","Borcu":kullaniciborcu}}
class paraEkleme(kullanici):
def __init__(self,kullaniiadi,kullanicisifresi,kullaniciborcu):
self.kullaniciadi=kullaniiadi
self.kullanicisifresi=kullanicisifresi
self.kullaniciborcu=kullaniciborcu
def borcekleme(self):
a=input("Ne kadar borc eklenecek ? ")
self.kullaniciborcu=self.kullaniciborcu+a
while True:
kullanici_adi=raw_input("Kullanici adinizi giriniz")
kullanici_sifresi=raw_input("Kullanici Sifresi Giriniz")
if kullanici_adi in list and kullanici_sifresi==borclular[kullanici_adi]["Sifresi"]:
yenikullanıcı=kullanici_adi(kullanici_adi,kullanici_sifresi,kullanıcıborcu)
Buradan farklı olarak benim 3,4 tane ilk kullanıcı tanımlamam gerekiyor programa. Kullanıcıya sorulan kullanici_adi ve kullanici_sifresi ’ ni Bu listedeki kullanıcı ismi ve şifresiyle denetleyip yeni oluşturduğu Kullanici’nin Bu isim ve Şifreye sahip ve borcu sıfır olan biri olmasını istiyorum , bir türlü matematiğini oluşturamadım bunun
Örneğin;
Kodu şu şekilde düzenledim ; fakat burada da şöyle bir sorunla karşılaştım , kullanıcıdan çıkıp tekrar giriş yaptığımda self.borc kısmı tekrardan sıfırlanıyor, bu sorunu nasıl aşabilirim ?
class Kullanici:
borclular = {
"Tom": {"Sifresi": "tom1234", "Borcu": 0},
"Mehmet": {"Sifresi": "mehmet123", "Borcu": 0}
}
def __init__(self, ad, sifre):
self.ad = ad
self.sifre = sifre
self.borc = 0
def kullanici_sorgu(self):
if self.ad in self.borclular.keys() and \
self.sifre == self.borclular[self.ad]["Sifresi"]:
print "Hosgeldin " + self.ad
else:
print("Bu kullanici kayitli degil.")
# Bu kullanicigi kayit etmek istiyor musunuz ?
class borcekleme(Kullanici):
def __init__(self,ad,sifre):
self.ad = ad
self.sifre = sifre
self.borc = 0
def borcekleme(self):
self.borc += float(input("Ne kadar borc eklenecek ? "))
self.borclular[self.ad]["Borcu"]=self.borc
def borcsilme(self):
self.borc-=float(input("Ne kadar borc silinecek"))
self.borclular[self.ad]["Borcu"]=self.borc
while True:
kullanici_adi = raw_input("Kullanici adinizi giriniz: ")
kullanici_sifresi = raw_input("Kullanici Sifresi Giriniz: ")
kullanici = borcekleme(kullanici_adi, kullanici_sifresi)
kullanici.kullanici_sorgu()
kullanici.borcekleme()
kullanici.borcsilme()
print(kullanici.borclular)
Kullanıcı adı veya şifresini yanlış girdiğinizde program Bu kullanıcı kayitli degil. stringini ekrana yazdırıyor. Sonra yine kullanıcıdan kullanıcı adı ve şifre girmesini istiyor. Yani zaten sorunuz tekrar soruluyor, siz başka bir sorudan mı bahsediyorsunuz yoksa? Ya da kullanıcının girdiği kullanıcı ismi listede yoksa, şifreyi girmeden bir uyarı yükseltilmesini ve döngünün başa alınmasını mı istiyorsunuz?
Şöyle benim benim projeyi ayrı ayrı classlar içinde yapmam gerektiği için her bir classtan bir öncekini inheritance alıyorum ve kullanici = Kullanici(kullanici_adi, kullanici_sifresi) yazmak yerine kullanici = SonYazdigimClass(kullanici_adi, kullanici_sifresi) son yazdığım class ile birlikte oluşturuyorum Kullanıcıyı . Acaba burada benim tekniksel bir hatam mı var. Son yazdığım class ta ise sadece obj leri tanıttığım alttaki kodu tanıtmadığım için proje hata veriyor. Bunun doğrusu nasıl olması gerekiyor
if ad in self.borclular.keys() and \
sifre == self.borclular[ad]["Sifresi"]:
print("Hosgeldin", ad)