Mr.Python 1,719 گزارش دادن ارسال شده در مهر 99 تمرین 3 -برنامه ای بنویسید که یک عدد اعشاری در مبنای 10 را به مبنای 2 ببرد. 5 1 واکنش ها : C0d3!Nj3ct!0n ، johnjones ، DeMoN و 3 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در مهر 99 تمرین 4 تو گروه های تلگرامی داشتم میگشتم که به یه تمرین جالبی برخوردم گفتم براتون بذارم. داده های اولیه شامل موارد زیر هست: table = {'?l':'abc', '?d':'123'} string = '?d ?d?d ?l?d some string hello?ghk?d?d and ?l' خروجی باید به این شکل باشه: ['123', '123', '123', 'abc', '123', 'some string hello?ghk', '123', '123', 'and', 'abc'] 5 2 واکنش ها : RT3N ، nnje ، johnjones و 4 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در مهر 99 در در 31 شهریور 1399 در 23:36، Mr.Python گفته است : تمرین 1 - برنامه ای بنویسید که از کاربر ، یک رشته دریافت کند و بزرگترین عدد داخل رشته را در خروجی نمایش دهد. نکته : (استفاده از توابع داخلی یعنی توابعی که در خود پایتون موجود هست - توابع built in مثل int - و استفاده از ماژول هایی مثل re - استفاده از دیگر متد های رشته مانند isdigit - isalpha - join و .... ، در برنامه جایز نیست ) حل : string = input('') def StrToInt(string): sum = 0 n = len(string) - 1 for s in string: sum+=numbers_ords[s] * 10 ** n if n==0:break n -= 1 return sum m = '' numbers = [] numbers_ords = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} for i in string: if i in numbers_ords: m+=i else: if m!='': numbers.append(StrToInt(m)) m = '' if m != '': numbers.append(StrToInt(m)) max_number = numbers[0] for i in numbers: if i > max_number: max_number = i print(max_number) 3 1 واکنش ها : MR.MSA ، RT3N ، johnjones و 1 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در مهر 99 در 21 ساعت قبل، Mr.Python گفته است : تمرین 4 تو گروه های تلگرامی داشتم میگشتم که به یه تمرین جالبی برخوردم گفتم براتون بذارم. داده های اولیه شامل موارد زیر هست: table = {'?l':'abc', '?d':'123'} string = '?d ?d?d ?l?d some string hello?ghk?d?d and ?l' خروجی باید به این شکل باشه: ['123', '123', '123', 'abc', '123', 'some string hello?ghk', '123', '123', 'and', 'abc'] حل : (تمرینات 2 و 3 خیلی اسونن ، به عهده خودتون - اگر مشکلی بود مطرح کنید) table = {'?l':'abc', '?d':'123'} string = '?d ?d?d ?l?d some string hello?ghk?d?d and ?l' gen_str = '' def generate(gen_str, string): mylist = list() if len(string) == 0:return mylist else: if string[0] == '?': if string[0] + string[1] in table: if len(gen_str) != 0 and gen_str.isspace()==False:mylist.append(gen_str.strip());gen_str='' mylist.append(table[string[0] + string[1]]) mylist+=generate(gen_str, string[2:]) else: gen_str+=string[0]; mylist+=generate(gen_str, string[1:]) else:gen_str+=string[0]; mylist+=generate(gen_str, string[1:]) return mylist print(generate(gen_str, string)) این برنامه رو با چند تا الگوریتم دیگه هم میشه نوشت ، اینجا من از الگوریتمی استفاده کردم که نیاز به حلقه های for و while نباشه ، همچنین از کلیدواژه ها ومتد های کمتری استفاده شده... یعنی خبری از yield و string partition نیست 3 1 واکنش ها : johnjones ، DeMoN ، MR.MSA و 1 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در آبان 99 تمرین 4 - تابعی بنویسید که مشتق یک عبارت چند جمله ای رو برحسب x حساب کند (اگر توان منفی رو هم در نظر بگیرید که خیلی بهتره برای تمرین بیشتر) : - عبارت جبری شامل ضرایب ثابت غیر عددی مثل حروف انگلیسی a b j c و شامل ضرایب عددی 4 2 6 7 میباشد. - علامت توان به شکل ^ هست - شناسه ی تابع moshtaq هست (اسم تابع) نمونه هایی از توابع چند جمله ای که به تابع Moshtaq دادیم : moshtaq('-y5x^4c4yb-2x^5+4x+7+40x-8+2') moshtaq('-5x^4c4yb-2x^5+4x-5x-5+7+40x-8+2') خروجی : -80y^2cbx^3-10x^4+4+40 -80cybx^3-10x^4+4-5+40 اگه خیلی دنبال کاملتر کردنش هستین : میتونین اعداد ثابتی که باقی میمونه رو رو هم محاسبه کنین (با تابع eval) مثلا تو خروجی اول ، ما 4 + 40 رو داریم که میتونین با یه تیکه کد تبدیلش کنین به 44 جواب در پست پایین قرار داده میشه. 4 1 واکنش ها : MR.MSA ، RT3N ، C0d3!Nj3ct!0n و 2 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در آبان 99 جواب تمرین 4 : import re def moshtaq(k): reg = r'\-*[a-zA-Z1-9]*\d*x\^*\-*\d*[a-zA-Z1-9]*' all = re.compile(reg).findall(k) dv = '' for p in all: if '^' not in p: for i in re.compile(r'(\-*[a-zA-Z1-9]*\d*)x').findall(p): if i == '':dv+='1' elif i == '-':dv+='-1' else: if '-' not in i: dv+='+'+i else: dv+=i else: zarayeb = ''.join(re.compile('(.*)x\^\-*\d*(.*)').findall(p)[0]) zarib = 1 zarib_q = '' z_q = '' for jj in re.compile(r'\d+').findall(zarayeb): zarib *= int(jj) zarayeb = zarayeb.replace(jj, '') while zarayeb != '': if zarayeb[0] == '-': zarib *= -1 else: zarib_q += zarayeb[0] zarayeb = zarayeb[1:] while zarib_q != '': c = zarib_q.count(zarib_q[0]) if c > 1: z_q+= zarib_q[0]+'^'+str(c) zarib_q = zarib_q.replace(zarib_q[0], '') else: z_q+=zarib_q[0] zarib_q = zarib_q.replace(zarib_q[0], '') reg_2 = r'x\^(\-*\d*)' gg = re.compile(reg_2).findall(p) zarib *= int(gg[0]) if '-' not in str(zarib)+z_q: dv += '+'+ str(zarib)+z_q+'x^'+str(int(gg[0]) - 1) else: dv += str(zarib)+z_q+'x^'+str(int(gg[0]) - 1) print(dv) moshtaq('-y5x^-4c4yb-2x^5+4x+7+40x-8+2') moshtaq('-200x^4c4yb-2x^5+4x-5x-5+7+40x^-1-8+2') moshtaq('-ab') moshtaq('ab') moshtaq('1') moshtaq('-x') moshtaq('+x') moshtaq('ax+b') moshtaq('ax^2+bx+c') moshtaq('ax^1') moshtaq('222x') moshtaq('10-40x+30') 4 1 واکنش ها : MR.MSA ، johnjones ، C0d3!Nj3ct!0n و 2 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در آبان 99 تمرین 5: - برنامه ای بنویسید که زمان را بر حسب ثانیه دریافت کند و ان را به ساعت و دقیقه و ثانیه تبدیل کند (خروجی باید به شکل 01:20:45 باشد) جواب در پست پایین 1 واکنش ها : johnjones به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
Mr.Python 1,719 گزارش دادن ارسال شده در آبان 99 جواب تمرین 5 : seconds = int(input('Enter the time : ')) h = seconds//3600 m = (seconds-(seconds//3600)*3600)//60 s = seconds-(h*3600+m*60) if h < 10: h = '0'+str(h) if m < 10: m = '0'+str(m) if s < 10: s = '0'+str(s) print(f'{h}:{m}:{s}') 1 1 واکنش ها : DeMoN و johnjones به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر