من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

حل تمرین شبکه اجتمایی کوئرا با پایتون

حل تمرین شبکه اجتمایی کوئرا با پایتون
حل تمرین شبکه اجتمایی کوئرا با پایتون

حل تمرین شبکه اجتمایی کوئرا با پایتون

در این نوشته به روش حل یکی از سوالات برنامه نویسی وب‌سایت کوئرا می‌پردازیم.

 

حل تمرین شبکه اجتمایی کوئرا با پایتون

می‌خواهیم یک شبکه‌ی اجتماعی ایجاد کنیم که امکان افزودن و جست‌وجو کردن افراد در آن وجود دارد. در این شبکه‌ی اجتماعی، اطلاعات هر شخص شامل نام، جنسیت، سن و شناسه‌ی آن شخص است. شناسه‌ی هر شخص بین 5 تا 10 کاراکتر و شامل حروف کوچک و بزرگ الفبای انگلیسی و اعداد است و شناسه‌ی افراد مختلف متفاوت است. دستورات این شبکه به شکل زیر هستند:

  • Add
  • Find

در دستور دوم ممکن است شناسه‌ی نوشته شده معرف یک شخص نیست؛ در این صورت شما باید در صورت وجود، افرادی را که شناسه‌ی آن‌ها با کاراکترهای نوشته شده شروع می‌شود به عنوان نتیجه‌ی جست‌وجو گزارش کنید. اگر تعداد این افراد بیشتر از 10 نفر بود، فقط 10 نفر اول (به ترتیب لغت‌نامه‌ای) را گزارش کنید.

 

ورودی

در هر خط از ورودی برنامه، یکی دستورهای بالا وارد خواهد شد. تعداد دستورات از 100000 کمتر است.

 

خروجی

برای دستورهای Add عبارتی به شکل User added successfully را در خروجی چاپ کنید. برای دستورهای Find، نتایج به دست آمده را در خروجی چاپ کنید. برای اینکه نتایج دستورهای مختلف قابل تمایز شوند، در هر خط خروجی شماره‌ی دستور Find متناظر با آن را نیز چاپ کنید. همچنین اگر برای جست‌وجوی انجام شده نتیجه‌ای یافت نشد، عبارت No user found را در خروجی قرار دهید. برای روشن‌تر شدن خروجی‌ها به نمونه توجه کنید.

 

مثال

ورودی نمونه 1

Add Ali male 20 ali20ali
Add Mohammad male 21 mohammadm
Add Akbar male 30 akbar30
Find ali
Add Maryam female 20 maryam20
Find mohammad21
Add Mahtab female 13 mahtab13
Add Maziar male 40 maziarAk
Find ma

 

خروجی نمونه 1

User ali20ali added successfully
User mohammadm added successfully
User akbar30 added successfully
1 Ali male 20 ali20ali
User maryam20 added successfully
2 No user found
User mahtab13 added successfully
User maziarAk added successfully
3 Mahtab female 13 mahtab13
3 Maryam female 20 maryam20
3 Maziar male 40 maziarAk

 

کد پایتون سوال تمرین شبکه اجتمایی

class Person:
    def __init__(self,username, gender, age, id) -> None:
        self.username= username
        self.gender= gender
        self.age= age
        self.id = id
    
    def __str__(self) -> str:
        return f"{self.username} {self.gender} {self.age} {self.id}"

persons = dict()

def add(username, gender, age, id):
    p = Person(username, gender, age, id)
    persons.update({id:p})
    print(f"User {p.id} added successfully")


def find(id):
    found_user = persons.get(id)
    if found_user:
        print(find.counter,found_user)
    else:
        persons_with_similar_id = sorted(list(filter(lambda x:x.startswith(id) ,persons.keys())))
        if len(persons_with_similar_id):
            for person_id in persons_with_similar_id[:10]:
                print(find.counter,persons[person_id])
        else:
            print(find.counter, 'No user found')

    find.counter+=1
         
find.counter=1


for i in range(100000):
    try:
        command = input().split()
        if command[0]== "Add":
            add(*command[1:])
        elif command[0]=="Find":
            find(command[1])
    except:
        break

 

منبع سوال: کوئرا

اگر نیاز به حل تمرین‌های دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]