Python kodundaki hata nedir?

Sydatolo

Decapat
Katılım
30 Nisan 2021
Mesajlar
209
Makaleler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Python:
import datetime,os
from re import fullmatch
from typing import NoReturn
class user:
    def __init__(self,username,joinDate,email,password):
        self.username=username
        self.joinDate=joinDate
        self.email=email
        self.password=password
    username=None
    joinDate=None
    email=None
    password=None
    def takeDatas(self,mode=str):
        self.email=str(input("Email: "))
        self.username=str(input("Username: "))
        self.password=str(input("Password: "))
        if(mode=="show"):
            return print(f"Username: {self.username}\nEmail: {self.email}\nPassword: {self.password}\nJoin date: {datetime.datetime.now}")
        if(mode=="hide"):
            pass
    def showDatas(self):
            print(f"Username: {self.username}\nEmail: {self.email}\nJoin date: {self.joinDate}\n")
            input()
    def changePassword(self):
        self.password=str(input("New Password: "))
    def checkEmail(email):
        characters = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
        if(fullmatch(characters,email)):
            print("Succesfully created.")
        else:
            print("Email is invalid.")
    def verifyUser():
        if(user[y].username!=None and user[y].email!=None and user[y].username!=None and user[y].joinDate!=None):
            __email__=str(input("Email: "))
            __password__=str(input("Password: "))
            if(user[y].email==__email__ and user[y].password==__password__):
                print("Datas valid.")
                return "1"
            elif(user[y].email==__email__ and user[y].password!=__password__):
                print("Invalid password.")
                return "2"
            else:
                print("Invalid datas.")
                return "0"
        else:
            print("User not found.")
            return "-1"
x=0
y=int
z=1
while(z!=0):
    action=str(input("Create user: 1\nLogin: 2\nShow Datas: 3\nChange password: 4\nExit: 0\n\nAction: "))
    if(action=="1"):
        user[x]=user      
        user[x].takeDatas("hide")
        user[x].checkEmail()
        x=y
        x+=1
    elif(action=="2"):        #hata çıkabilir buraya bak ve try except komutu yaz.
        if(user[y].username!=None and user[y].email!=None and user[y].username!=None and user[y].joinDate!=None):
            user[y].verifyUser()
    elif(action=="3"):
        if(user[y].verifyUser()=="1"):
            user[y].showDatas
        else:
            pass
    elif(action=="4"):
        if(user[y].verifyUser()=="1"):
            user[y].changePassword
        else:
            pass
    elif(action=="0"):
        z=0
    else:
        print("Invalid action.")
        input()
        continue

Screenshot_1.png


Screenshot_2.png


Screenshot_3.png


Screenshot_4.png


Python kodunu çözemedim. Yardım eder misiniz?
 
1 ve 2. Hata: Listeye değer vermeden kullanmışsınız. 'user'ı bir class olarak tanımlamışsınız. Liste olmadığı için içinden veri alamazsınız.
3 ve 4. Hata: Olmayan bir değerden eleman alıp kontrol yapmaya çalışmışsınız.

TypeError'un tanımı tür hatasıdır. Örneğin classlarda eleman çağırma fonksiyonunu kullanamazsınız. Çünkü fonksiyonun bağlı oldu nesnenin türü yanlıştır.
Örneğin string bir değişkende işlem yapmak istiyorsunuz ama işlemin istediği AnyStr'sa hata alırsınız. Bu çok karşılaşılan bir hatadır.

Çünkü Str ve AnyStr farklı nesnelerdir.
 
Son düzenleme:

Geri
Yukarı