رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

Mr.Python

کد نویس
  • ارسال ها

    529
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    82

Mr.Python آخرین بار در روز اُکتُبر 27 2021 برنده شده

Mr.Python یکی از رکورد داران بیشترین تعداد پسند مطالب است !

درباره Mr.Python

  • تاریخ تولد 02/14/1999

آخرین بازدید کنندگان پروفایل

12,730 بازدید پروفایل
  1. خب ببینید اگه تا همین الان رفته بودید تو گوگل سرچ میزدید (حتی فارسی ) میفهمیدین قضیه چیه و این سیل اضطراب و استرس هم الان راه نیوفتاده بود تو وجودتون.... با تماس تلفنی ،کسی هک نشده و نمیشه اینا برا تو فیلماس تو واقعیت در اون حد هنوز خفن نشدیم هدف از برقراری این تماس ها اینه که اعتبار از سیم کارتتون کسر بشه و براتون هزینه حساب بشه چرا؟ خیلی واضحه چون تماس برا خارج از کشوره و تماس با خارج از کشور هم هزینه زیادی داره حتی در حد چند ثانیه و این هزینه برای اون کسایی که این بیزینس هارو راه انداختن واریز میشه درست یا غلطشو نمیدونم ....
  2. Mr.Python

    تمرین برنامه نویسی با پایتون

    سوال (از codewars) سطح بالای 4kyu لینک:[Hidden Content] لینک جواب خودم رو هم میذارم : [Hidden Content] عدد n بهتون داده میشه باید دنباله ای از اعداد پایین a b c d e f g ... رو پیدا کنید که مجموع مربعات اعضای این دنباله برابر n² باشه . به عبارت دیگه: n²=a²+b²+c²+d² + .... یعنی درواقع n رو بهتون میدن و شما باید این اعداد a bc ,.. رو پیدا کنید و به صورت list نمایش بدین . اما این اعداد به هیچ وجه نباید شبیه هم باشن و باید به صورت صعودی باشن تو لیست . مثال ) اگر : n=11 خروجی داریم: [1,2,4,10] چون 11² = 121 = 1 + 4 + 16 + 100 مثال ) n=12 خروجی: [1, 2, 3, 7, 9] راهنمایی: در هر مرحله نزدیک ترین عدد مربع کامل رو پیدا کنید.
  3. Mr.Python

    تمرین برنامه نویسی با پایتون

    def compress_string(string): dct={} output_list=[] while True: for number in string: if number in dct: dct[number]+=1 else: dct[number]=1 output_list.append(number) for value in dct.values(): if value!=1: output_list.append(str(value)) output_list.sort(key=lambda x: int(x)) output="".join(output_list) if output==string: return output string=output output_list.clear() dct.clear() input_string=input() print(compress_string(input_string))
  4. Mr.Python

    تمرین برنامه نویسی با پایتون

    سوال [Hidden Content] (فشرده سازی خاص) جواب رو تو پست پایین میذارم نکات سوال و راهنمایی: البته راه حل اسپویل میشه تا حدی سعی کردم ، کامپلکسیتی( پیچیدگی برنامه - تعداد مراحل انجام کار) تا حد ممکن کم باشه و بهینه باشه یهراه دیگم میتونه این باشه که از تابع Counter در ماژول collections استفاده کنین تا تعداد هر عنصر داخل رشته رو در قالب دیکشنری بهتون بده و بعد بیاین دوباره رو رشته iterate کنید با حلقه ها و مشخص کنید چه حرفی چند بار تکرار شده و .... یا اصلا بدون ماژول بیاین از متد count استفاده کنین و ... راه حلا زیاده من اینجا از یه لیست و یه دیکشنری استفاده میکنم و هر بار خالیشون میکنم (این خالی کردن ، خودش سرعت رو میاره پایین ) به هر حال "پایتونه "و نمیتونید واقعا تشخیص بدیدبرنامتون کامپلکسیتی کمتری داره(بهینه تره) مگر اینکه کاربرد هر متد رو بدونین - بدونین وقتی میگیم count داره در حقیقت اون پشت مشتا رو اون شی یه حلقه میزنه و حلقه کامپلکسیتی رو بالا میبره ... همین مسئله برای دیکشنری هم صدق میکنه .... برای اینجور چیزا باید زبان C مسلط باشید ... که این توابع داخلی خودشون به زبان سی نوشته شدن
  5. Mr.Python

    تمرین برنامه نویسی با پایتون

    -سوال رشته ی s به شما داده میشود که حاوی اعداد ، حروف بزرگ و کوچیک انگلیسی هست . اعمال زیر را انجام دهید. 1. حروف کوچیک به صورت مرتب شده قبل از حروف بزرگ 2.حروف بزرگ به صورت مرتب شده قبل از اعداد 3. اعدد فرد به صورت مرتب شده قبل از اعداد زوج که مرتب شدن نکته:منظور از مرتب شده، مرتب کردن عناصر با ascii code های مربوط بهشون هست جواب: s="SortingSUN498127" lowers=[] uppers=[] odds=[] evens=[] for i in s: if i.isdigit(): if int(i)%2==0: evens.append(i) else: odds.append(i) elif i.islower(): lowers.append(i) elif i.isupper(): uppers.append(i) uppers.sort() lowers.sort() odds.sort() evens.sort() print("".join(lowers+uppers+odds+evens)) از sort استفاده کردیم نه sorted بخاطر این که این متد in-place عمل میکنه و یه آبجکت جدید درست نمیکنه و کار مرتب سازی رو رو همون لیست انجام میده در صورتی که sorted میاد لیست جدید درست میکنه و اعضای مرتب شده رو داخلش میندازه
  6. Mr.Python

    تمرین برنامه نویسی با پایتون

    -سوال برنامه ای بنویسید که اعداد کامل را چاپ کند . (اعداد کامل میدونید چیا هستن و یا میتونید سرچ بزنین ) جواب : from math import sqrt def isprime(number): if number%2==0 and number!=2: return False elif number==2: return True else: for i in range(3,int(sqrt(number))+1,2): if number %i==0: return False return True k=1 while True: try: m=2**k-1 if isprime(m): print((2**k-1)*(2**(k-1))) k+=1 except KeyboardInterrupt: break خب ببینید اینجا اگه از اون راه حل معمولی و "واضح" استفاده کنین مشکل درست میشه چون سرعت برنامه به شدت پایین میاد .. هر چند این روش هم خیلی خوب نیست و برای اعداد بزرگ نیاز به زمان بیشتری داره ولی خب خیلی خیلی بهتر از راه معمولیش هست که بیاید مقسوم علیه هارو پیدا کنین جمع بزنین و ... این رابطه تا جایی که میدونم اثبات شده .. دوستانی که از کامپلکسیتی سر در میارن حتما میدونید که برای قسمت "چک کردن عدد اول" کامپلکسیتی به این شکله: O(√n) و البته درست ترش Θ(√n)
  7. Mr.Python

    تمرین برنامه نویسی با پایتون

    import re def find(string): if len(re.compile("h+[^hHeELlOo]*e+[^hHeELlOo]*l+[^hHeELlOo]*o+[^hHeELlOo]*").findall(string))==0: return False else: return True a=["553nhghhettlloo" , "heeyyyuuulllo", "737hdhsheelllow", "hee62626lltoow", "hhhelleoo", "hello", "helo", "oloowh", "enoughellllllllllowo"] for i in a: print(i, find(i)) یه چند تا کلمه برای تست گذاشتم تو لیست . نکته اینه که شاید بتونید ریجکس بهتری براش بنویسید . من دیگه نخواستم روش فکر کنم ... به هر حال اینجوریم میتونید بنویسید تابع رو : return len(...) == 0
  8. Mr.Python

    تمرین برنامه نویسی با پایتون

    -سوال این سوالو تو یکی از گروه های تلگرامی چند وقت پیش دیدم برنامه ای بنویسید که یک رشته از کاربر بگید و عمل زیر را انجام دهد: بررسی کند که ایا ترتیب حروف hello در آن رعایت شده یا نه . بطور مثال : hellow h45e8l8lo درسته ولی اینها غلط هستن: heelow he78lo نکته : به تعداد کاراکتر ها باید توجه کنید . حل رو میذارم که خودم با ریجکس نوشتم (دوستان تلفظ کلمه regex میتونه هم بریتانیایی یعنی rehjeks خونده بشه هم regeks که امریکایی هست - لازم نیست حتما تمام کلمات انگلیسی رو تو زبان فارسی عینا تلفظ کنیم و میتونیم یکم تغییرش بدیم و این به معنای این نیست که قراره هر کی برا خودش یه تلفظ درست کنه - در کل سخت نگیرید میتونین شکل درست رو بدونین ولی هر جور راحتترین بیانش کنین - مسلما راحتی تو این نیست که بگیم "رجیک" ! بگذریم...)
  9. Mr.Python

    تمرین برنامه نویسی با پایتون

    a=2.2 b=14 k=0.1251 def Maximum(list): max = list[0] for i in list: if i>max: max=i return max; def Length(str): n = 0 for i in str: n+=1 return n def finddot(str): n = 0 for i in str: if i=='.': return n n+=1 return -1 p=Maximum([Length(str(i))-(finddot(str(i))+1) for i in [a,b,k]]) if p==-1:p=0 while a<=b: print(format(a, '.%df'%p)) a+=k این روش خطا داره و برای اینجور کارهابهتره برید سراغ محاسبات arbitary precision . یعنی مثل دوران مدرسه و ابتدایی که جمع و تفریق رو یاد گرفتیم زیر هم اعداد رو جمع بزنید یا کم کنید و همینجوری پیش برید . یعنی از + و - برای محاسبات استفاده نکنید . چون اینها صرفا یه سری دستورات ماشینی هستن که میاد دو تا عدد رو جمع و تفریق میکنن و تا یه حدی میتونن این محاسبات رو ادامه بدن و از یجا به بعد معمولا 15 16 رقم اعشار میزنن و رقم اخر گرد میشه چون تو ماشینی که دارید کد نویسی میکنید بیشتر از این برای محاسبات ، فضای دلخواه از رم اختصاص داده نمیشه.. به همین دلیل میان از لیست ها و آرایه ها استفاده میکنن برای اعداد بزرگ و اعشار های زیاد شاید شنیده باشید عدد pi رو تا بیلیون ها رقم محاسبه کردن ، دقیقا از همین روش استفاده کردن یعنی محاسبات رو با ارایه ها و لیست ها پیاده سازی کردن .... به طور مثال: اعداد 234 و 12 رو به این شکل داخل ارایه و لیست ذخیره میکنن: [2,3,4] [0,1,2] و میان با حلقه ها ، 4 + 2 رو میکنن ، میندازن تو ارایه سوم بعد 3 + 1 و به همین ترتیب تا ارایه جواب رو بدست بیارن:(جمع و تفریق دوران ابتدایی) [2,4,6] و اینجوری محاسبات با دقت بالا انجام میشه و طول اعداد هم مهم نیست و میتونین به دلخواه اعشار بزنین.. البته برای زبان های کامپایلری مثل c و cpp کتابخونه هایی نوشته شده برای این منظور، که معروف ترینش همون GMP هست . ولی خب اکثر زبان های مفسری اینجوری نیستن و شما لازم نیست برای مثلا فاکتوریل 100 بیاین کتابخونه استفاده کنین چون به صورت داینامیک اون پشت مشتا خودش محاسبات رو در قالب ارایه ها انجام میده
  10. خب ببینید این قابلیت برا اینه که اونی که داره کد میزنه ، دیگه هی نیاد پرانتز باز و بسته کنه و شما با باز کردن پرانتز ) دیگه نیازی نیست حتما ( رو هم بذارید و خود ادیتور و ide ها اینکارو انجام میدن براتون برای راحتی کار .... هر چند از اونجایی که تازه کار هستین بهتره فعلا با idle پایتون کار کنید و این راحتی ها در دسترستون نباشه .. ضمنا وقتی شما مینویسین print("hello") اون علامت | (پایپ Pipe) که معمولا حالت چمشک زدن داره و پوزیشن جایی که میخواید تایپ کنید رو مشخص میکنه ، همیشه بین پرانتز میمونه (حداقل تا جایی که خودم دیدم) چرا؟ چون معمولا پرانتز ها باز میشن که چیزی داخلشون نوشته بشه و خیلی کم پیش میاد شما تابعی رو که داخل برنامه تعریف میکنید ، بدون ارگومان باشه (از اونجایی که تازه کارید فعلا این مطلب رو داشته باشید تا بعدا که تابع نویسی و برنامه نویسی تابعی رو یاد گرفتید متوجه میشید قضیه این "ارگومان" ها چیه) به نظرم زدن یه کلید سمت راست - right arrow key - خیلی سخت نباشه ها امیدوارم انقدری که درگیر سرعت نوشتن و راحتی کد زنی هستین ، درگیر چیزای دیگه ای هم تو برنامه نویسی باشین که مشخص کنه شما یه برنامه نویس هستین نه یه کد نویس ... سرعت در کد زدن خیلی مهم نیست ...
  11. Mr.Python

    تمرین برنامه نویسی با پایتون

    -سوال دنباله ای از اعداد بسازید که اعداد اول و اخر ان به ترتیب a و b باشد و فاصله ی بین هر دو عدد آن k باشد. درواقع این سوال یچیزی مثل این میمونه که بگیم ، چجوری میشه با تابعrange خروجی float دربیاریم نه Int چون میدونیم تو range اعداد صحیح تولید میشن نه اعشاری. ولی خب تو این سوال، میخوایم مثلا بین دو عدد 2 و 14 با فاصله 0.2 دنباله بسازیم. 2.0 2.2 2.4 2.6 .... اما نکات: 1. استفاده از توابع داخلی و ماژول ها ، مجاز نیست . البته از تابع format و str میتونید استفاده کنین . 2. متغیر های a و b و k میتونن عدد صحیح یا اعشاری باشن .
  12. Mr.Python

    تمرین برنامه نویسی با پایتون

    def compare(string1, string2): if string1=='' and string2=='': return 'Both strings are empty!' else: if string1=='' and string2!='':return string2[::-1] elif string2=='' and string1!='':return string1[::-1] else: if string1[0] == string2[0]: string1=string1.replace(string1[0],'') string2=string2.replace(string2[0],'') elif string1[0]<string2[0]:string1=string1.replace(string1[0],'') else:string2=string2.replace(string2[0],'') if string1=='' and string2!='':return string2 elif string2=='' and string1!='':return string1 else: string1=string1[::-1] string2=string2[::-1] return compare(string1, string2) compare('', '') compare('', 'nima') compare('ali', 'salib') compare('amin', 'nima')
  13. Mr.Python

    تمرین برنامه نویسی با پایتون

    -سوال خب این سوال رو تو سایت quera پیدا کردم گفتم شاید بد نباشه یه مانوری بدیم روش قطعا بهتر و خوشگلتر از حل من هم پیدا میشه . خب سوال اینه: عَلی و سَلیب که با یکدیگر برادر هستند، تصمیم گرفتند یک بازی هیجان‌انگیز دو نفره‌ای را انجام دهند تا شاید آدرنالین خون‌شان افزایش پیدا کند. بازی از این قرار است که عَلی و سَلیب، هر کدام یک رشته انتخاب می‌کنند. سپس حرف اول رشته‌ای که حرف اولش از لحاظ لغت‌نامه‌ای کوچک‌تر است را حذف (اگر حرف اول دو رشته برابر بودند،‌ حرف اول هر دو رشته را حذف می‌کنند.) و هر دو رشته را معکوس می‌کنند. این کار را تا جایی انجام می‌دهند که یکی از دو رشته یا هر دو رشته، خالی شوند. حال شما باید تابع compare(string1, string2) (که string1 رشته‌ی انتخابی عَلی و string2 رشته‌ی انتخابی سَلیب است.) را به گونه‌ای تکمیل کنید که: اگر در نهایت یکی از دو رشته خالی شده بود، محتویات رشته‌ی دیگر را بازگرداند. اگر در نهایت هر دو رشته خالی شده بودند؛ عبارت Both strings are empty! را بازگرداند. توجه کنید که اگر یکی از رشته‌ها خالی شد؛ رشته‌ی دیگر، نباید مجدداً معکوس شود. ورودی: compare('ali', 'salib') خروجی : las حل در پست پایین
  14. Mr.Python

    تمرین برنامه نویسی با پایتون

    def sort(string): l = [] for i in string: l.append(i) while True: flag = 1 n=0 m=1 while m!=len(l): if int(l[n])>int(l[m]): i = l[n] l[n] = l[m] l[m] = i flag=0 n+=1;m+=1 if flag==1: return ''.join(l) s='442254545' print(sort(s)) البته بهترشم میشه کرد که خیلی شلوغ نشه یا از روش دیگه ای ، مثلا یه روش دیگه اینه که اول بیاید کوچکترین و بزرگترین عنصر رو پیدا کنید و به ترتیب تو اول و اخر یه لیست قرار بدید و بعد ، از رشته مورد نظر حذفشون کنید و بعد دوباره اینکارو روی رشته تکرار کنید تا در نهایت یه لیست مرتب داشته باشید . برای حل عکس این سوال ، یعنی ترتیب از بزرگ به کوچیک فقط کافیه علامت < رو برعکس کنید .
  15. Mr.Python

    تمرین برنامه نویسی با پایتون

    سوال -برنامه ای بنویسید که یک رشته از اعداد را دریافت کرده و انها را از کوچک به بزرگ مرتب کند (استفاده از تابع مرتب سازی sorted مجاز نیست ) ورودی : 442254545 خروجی: 224444555 جواب در پست پایین
×
×
  • ایجاد مورد جدید...