Skip to content

Instantly share code, notes, and snippets.

@AmirMahdyJebreily
Last active August 11, 2023 11:19
Show Gist options
  • Save AmirMahdyJebreily/80cdf17ba93a6e0257cec46768a673bc to your computer and use it in GitHub Desktop.
Save AmirMahdyJebreily/80cdf17ba93a6e0257cec46768a673bc to your computer and use it in GitHub Desktop.
oop course : create an oop contacts app with python
import re
phonenumberValidateRegEx = r"((0?9)|(\+?989))((14)|(13)|(12)|(19)|(18)|(17)|(15)|(16)|(11)|(10)|(90)|(91)|(92)|(93)|(94)|(95)|(96)|(32)|(30)|(33)|(35)|(36)|(37)|(38)|(39)|(00)|(01)|(02)|(03)|(04)|(05)|(41)|(20)|(21)|(22)|(23)|(31)|(34)|(9910)|(9911)|(9913)|(9914)|(9999)|(999)|(990)|(9810)|(9811)|(9812)|(9813)|(9814)|(9815)|(9816)|(9817)|(998))\W?\d{3}\W?\d{4}"
# use this RegEx for encapsulate email field in contacts class
emailValidateRegEx = r"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"
# OOP (Object oriented Programming) => Class : Polymorphysm : Inheritance : Encapsulation
# S.O.L.I.D
class Contact:
# -----------------------------{تکلیف}--------------------------------
def chechEmail(email):
pass # Completethe code ... #
def setEmail(self, email):
pass # Complete the code ... #
def getEmail(self):
return self.__email # Remember why ... #
# --------------------------------------------------------------------
def checkPhoneNumber(phoneNumber):
if re.findall(
phonenumberValidateRegEx, phoneNumber
): # آیا این واقعا شماره تلفنه ؟
return True
else:
return False
def setPhoneNumber(self, phoneNumber):
if Contact.checkPhoneNumber(phoneNumber):
self.__phoneNumber = phoneNumber
else:
raise ValueError("phone number is not valid !")
def getPhoneNumber(self) -> str:
return self.__phoneNumber
def __init__(self, name, address, phoneNumber, email):
self.name = name
self.address = address
self.__email = email # تکلیف : انکپسولِیت کردن این خصوصیت
# سعی کنید یادتون بیاد چرا پشت اسم متغیر ایمیل دوتا __ گذاشتم
# اگر یادتون نیومد
# https://www.geeksforgeeks.org/underscore-_-python/
# https://dbader.org/blog/meaning-of-underscores-in-python#:~:text=The%20single%20underscore%20is%20simply,sometimes%20used%20for%20this%20purpose.&text=Besides%20its%20use%20as%20a,expression%20evaluated%20by%20the%20interpreter.
# اگر یادتون نیومد این دوتا لینک رو بخونید
# یاد بگیرید از مقاله هایی به زبون دیگه، اون چیزی که میخواید رو استخراج کنید.
# گوگل ترنسلیت کمکتون میکنه
# چیزای جدید تر هم در کنار اون چیزی که میخواید یاد میگیرید
# تکلیفتونو تا جلسه قبل به آیدی زیر توی تلگرام یا ایتا ارسال کنید (ترجیحا تلگرام)
# @am_jcs
self.setPhoneNumber(phoneNumber)
def __str__(self):
# سعی کنید دلیل نوشته شدن این کد رو اینجا یادتون بیاد. اگر یادتون نیومد از اون لینک های بالا میتونید به یه نتیجه کلی برسید
# اگه با اونا باز هم به نتیجه نرسیدید این لینک رو ببینید :
# https://www.pythonlikeyoumeanit.com/Module4_OOP/Special_Methods.html
#
# اگر با بالایی هم یادتون نیومد اینجا توضیح داده
# https://www.scaler.com/topics/python-str/
#
#
# راهنمایی
# توی کد یه جای دیگه هم این کامنت رو گذاشتم. پیداش کنین به جواب می رسین
# (1)
return self.name
contacts = [
Contact("CodeAgha", "Mashhad", "09331962277", "asd@gmail.com"),
Contact("Aref", "Mashhad", "09155517670", "abc@gmail.com"),
]
c = True
while c:
print()
print(*contacts, sep=", ") # (1)
inputedName = input(
"enter name of a contact. \nif you want to add anouther one enter anouther name : "
)
isExist = False
cont = None
for contact in contacts:
isExist = contact.name == inputedName
if isExist:
cont = contact
if isExist:
print("\n", cont.name, "'s Phone number is : ", cont.getPhoneNumber())
print(cont.name, "'s Address is : ", cont.address)
print(
"اینجا باید مثل متن های بالا ایمیل کاربر چاپ بشه و حواستون باشه به ارور نخورید "
) # اینجا هم باید تغییر بدی
else:
newAddress = input("Enter new contact address : ")
newEmail = input("Enter new contact email : ")
c_for_pn = True
while c_for_pn:
newPhoneNumber = input("Enter new contact phone number: ")
if Contact.checkPhoneNumber(newPhoneNumber):
c_for_pn = False
else:
print("phone number is not valid ! \n")
try:
newContact = Contact(inputedName, newAddress, newPhoneNumber, newEmail)
except:
print("phone number is not valid ! \n")
contacts.append(newContact)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment