مشاركة حلول: انهاء مستودع للمنشورات Post Store

#1

مرحباً جميعاً

المهمة المطلوبة

بإمكانك الإطلاع على المهمة المطلوبة من هنا

كيفية كتابة الأكواد في المنتدى

1 Like
#2
class Post:
    def __init__(self, id, photo_url, name, body):
        self.id = id
        self.photo_url = photo_url
        self.name = name
        self.body = body

posts = []

class PostStore:

    def get_all(self):
        # get all posts
        return posts

    def add(self, post):
        # append post
        posts.append(post)
        return posts


    def get_by_id(self, id):
        # search for post by id - id البحث عن منشور بالمعرف
        result = None
        for post in posts:
            if post.id == id:
                result = post
                break
        return result

    def update(self,id,fields):
        post = self.get_by_id(id)
        post.name = fields["name"]
        post.photo_url = fields["photo_url"]
        post.body =fields["body"]
        return post

    def delete(self,id):
        post = self.get_by_id(id)
        posts.remove(post)
        return posts

1 Like
#3

عمل رائع يا اسماء كالعادة :wink:

1 Like
#4
class Post:
    def __init__(self, id, photo_url, name, body):
        self.id = id
        self.photo_url = photo_url
        self.name = name
        self.body = body

posts = []

class PostStore:
    def get_all(self): 
        for post in posts:
            return post

    def add(self, post):
        self.post = post
        posts.append(post)
        return posts

    def get_by_id(self, id):
        result = None
        self.id = id 
        for post in posts:
            if post[0] == id:
                result = post
                break
        return result
    
    def update(self, id, fields):
        post = self.get_by_id(id)
        post.name = fields['name']
        post.photo_url = fields['photo_url']
        post.body = fields['body']
        return post

    def delete(self, id):
        post = self.get_by_id(id)
        posts.remove(post)
        return posts
1 Like
#5

عمل رائع جدا يا يحيى… انتقل للتالي :wink:

1 Like
#6

استاذ اجد صعوبة في فهم المطلوب والشرح بالنسبة لي غير مفهوم بالشكل الكامل حبذا لو تبسط لنا المفاهيم أكثر وعذرا على كلامي لأني صراحة لا أريد أن أتجاوز حل هذه المهام الشيقة

1 Like
#7

بالتأكيد, نحن هنا للمساعدة :wink:

مالذي لم تفهميه بالضبط ؟ ماهو الجزء الذي استصعب عليك ؟

1 Like
#8

شكرا استاذ ياسر عندما وصلت الى حل هذا الجزء لم أعرف كيف أقوم بحله كما فعل الزملاء من أعلى

1 Like
#9

أهاا

الأمر سهل يا سارة, لدينا الدالة get_all التي بدورها سترجع قائمة المنشورات يعني فقط:

def get_all():
     return posts

الدالة add تقوم بإضافة منشور على القائمة بهذا الشكل posts.append

والدالة الأخيرة get_by_id تبحث عن المنشور باستخدام الـ id داخل الـ for loop (كل مرة تتحقق من post.id)

جربي العمل على كل دالة بشكل منفصل, واخبريني لو واجهتك أي مشكلة :wink:

1 Like
#10

نعم شكرا أنا فهمت محتوى الكود بقي فقد ان أتدرب على بايثون لأنها جديدة علي تحياتي

1 Like
#11

لا مشكلة ابداً, التعامل مع الأشياء الجديدة هي وظيفتنا (المبرمجين) :smile:

أنتظر حلك للمهمة :wink:

1 Like
#12

تحياتي لكم جميعا
انا متأحر قليلا لكن لم اتترككم :slightly_smiling_face::slightly_smiling_face::wink:

class Post:
    def __init__(self, id, photo_url, name, body):
        self.id = id
        self.photo_url = photo_url
        self.name = name
        self.body = body


posts = []


class PostStore:

    def get_all(self):
        
        return posts

    def add(self, id, photo_url, name, body):
        x = Post(id, photo_url, name, body)
        posts.append(x)

    def get_by_id(self, id):
        for post in posts:
            if post.id == id:
                return post
        return None

    def update(self, id, fields):
        for i,post in  enumerate(posts):
            if post.id== id:
                posts[i].name = fields['name']
                posts[i].photo_url = fields['photo_url']
                posts[i].body = fields['body']



    def delete(self, id):
        for post in posts:
            if post.id == id:
                posts.remove(post)


p = PostStore()
p.add(0, 'http', 'sohep', 'i go to school')
p.add(1, 'https', 'ahmad', 'my name is ahmad')
#print(posts[1].name)
updated_fields = {'name': 'Maryam',
                  'photo_url': 'https://images.pexels.com/photos/736716/pexels-photo-736716.jpeg?auto=compress&cs=tinysrgb&dpr=1&h=100&w=100',
                  'body': 'Lorem Ipsum'}
p.update(0,updated_fields)
x= p.get_by_id(0)
print(x.body)
p.delete(1)
1 Like
#13

لا مشكلة ابدا يا صهيب :wink:

عمل رائع صراحة :+1:

1 Like
#14

class Post:
    def __init__(self, id, photo_url, name, body):
        self.id = id
        self.photo_url = photo_url
        self.name = name
        self.body = body

posts = []

class PostStore:
    def get_all(self):
        # get all posts - الحصول على كل المنشورات
        return posts

    def add(self, post):
        # append post - إضافة منشور
        posts.append(post)
        return posts

    def get_by_id(self, id):
        # search for post by id - id البحث عن منشور بالمعرف
        result = None
        for post in posts:
            if post.id == id:
                result = post
                break

        return result

    def update(self, id, fields):
        # update post data - id تعديل منشور بالمعرف
        post = self.get_by_id(id)
        post.name = fields['name']
        post.photo_url = fields['photo_url']
        post.body = fields['body']
        return post

    def delete(self, id):
        # delete post by id - id حذف منشور بالمعرف
        post = self.get_by_id(id)
        posts.remove(post)
        return posts


1 Like
#15

ممتاز يا أحمد :+1: