🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمدرضا یادگاری
چالشی که استاد تعیین کردند.
جامعه پایتون (وب) ایجاد شده در ۲۰ دی ۱۴۰۱
words = ["hello", "hall", "hello world"]
def few_letters(words):
    few_letters = len(words[0])
    for word in (range(len(words) - 1)):
        if few_letters <= len(words[word + 1]):
            passelse:
            few_letters = len(words[word + 1])
    return(few_letters)
def zipp(words):
        a = list()
        l = list()
        for i in range(few_letters(words)):
            for j in range(len(words)):
                l.append(words[j][i])
        x = 0for j in range(few_letters(words)):
            a.append([])
        for i in range(len(l)):
            if len(a[x]) == 3:
                x += 1
                a[x].append(l[i])
            else:
                a[x].append(l[i])
        return(a)
def common_prefix(words):
    a=zipp(words)
    tmp=""for i in a :
        if len(set(i)) != 1:
            breakelse:
            tmp+=i[0]
    print(tmp)
common_prefix(words)
##output : h

ممنون میشم موارد بهینگی و اصولی رو بدونم.

محمدرضا یادگاری ۲۰ دی ۱۴۰۱، ۰۸:۴۳

سلام محمد عزیز وقت بخیر

چنتا نکته مهم :‌ توی هر زبانی مخصوصا پایتون به شدت از نام گذاری‌های مثل i , j ,a و . . جلوگیری کن.

اصل تک مسئولیتی : هر تابع فقط باید یه کار کنه.همچنین تعداد شروط و حلقه‌ها زیاده .

من یه خورده کدت رو تا جایی که تونستم تست و بهینه‌تر کردم

def few_letters(words):
    a = []
    for word in words:
        a.append(len(word))
    return min(a)
def zipp(words):
    a = []
    for i in range(few_letters(words)):
        tmp = []
        for word in words:
            tmp.append(word[i])
        a.append(tmp)
    return a
def common_prefix(words):
    a = zipp(words)
    b = []
    for i in a:
        if len(set(i)) == 1:
            b.append(i[0])
        else:
            break
    print(''.join(b))
بهترین پاسخ
Reza Mobaraki ۲۰ دی ۱۴۰۱، ۱۰:۲۶