مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

طبقه بندی موضوعی
بایگانی

برنامه ای نوشتم که آدرس یک سایت رو بگیره و آی پی سایت رو نمایش بده. خیلی ساده (البته گرافیکی* #پایتون )


#Code By Saeed Damghanian

#Software Engineer from Semnan


import os, socket

import tkinter as tk

from tkinter import font


def response(a):

    b = socket.gethostbyname(a)

    c = "\n \n \nProgrammer: Saeed Damghanian\nWebsPyschool.blog.ir\nWant to Join our Telegram Channel? >> t.me/ghoghnous_iran"

    return b + c


def do(a):

    label['text'] = response(a)


root = tk.Tk()

root.title('Get Website Ip')


canvas = tk.Canvas(root, height=500, width=600)

canvas.pack()


#background_image1 = tk.PhotoImage(file='bg.png')

#background_label =tk.Label(root, image=background_image1)

#background_label.place(relwidth=1, relheight=1)


frame = tk.Frame(root, bg='#C02F11', bd=5)

frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.1, anchor='n')


entry = tk.Entry(frame, font=('Modern', 15))

entry.insert(0, 'Website URL')

entry.place(relwidth=0.65, relheight=1)


button = tk.Button(frame, text='Get IP', bd=0, bg='white', fg='#098f00', font=60, command=lambda:do(entry.get()))

button.place(relx=0.7, relheight=1, relwidth=0.3)


lower_frame = tk.Frame(root, bg='#0ed400', bd=10)

lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight=0.6, anchor='n')


label = tk.Label(lower_frame, font=('Modern', 15), anchor='nw', bg='#323142', fg='white', justify='left', bd=4)

label.place(relwidth=1, relheight=1)


root.mainloop()


g241362_Untitled.png


۰ نظر موافقین ۰ مخالفین ۰ ۲۳ تیر ۹۸ ، ۰۰:۰۰
سعید دامغانیان

مثال هایی از SORT (مرتب سازی ) در پایتون. تحلیل و تفسیر با شما...


a29009_01.jpg

e2519_02.jpg

a944746_03.jpg

o38084_04.jpg


r04659_05.jpg


موفق و پیروز باشید #سعیددامغانیان


۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۵۵
سعید دامغانیان

lambda

توابع lambda

ایجاد یک تابع به طور معمول با استفاده از def صورت می گیرد و به طور خودکار آن را به یک متغیر اختصاص می دهد.
این کار نسبت به ساخت دیگر object ها متفاوت است – مانند رشته ها و اعداد صحیح – که می توانند در هنگام کد نویسی و در هر جایی ایجاد شوند بدون اینکه آنها را به یک متغیر اختصاص دهید.
همان کار با توابعی امکان پذیر است، در صورتی که با استفاده از lambda ایجاد می شوند. توابع ایجاد شده در این روش ناشناس هستند.
این رویکرد اغلب هنگام انتقال یک تابع ساده به عنوان یک استدلال به عملکرد دیگر استفاده می شود. نحوه عملکرد آن در مثال زیر نشان داده شده است و شامل کلید واژه lambda است که به دنبال آن یک لیست از استدلال، کولون و بیانات برای ارزیابی و بازگشت پاسخ در نظر گرفته شده است.

def my_func(f, arg):
  return f(arg)

my_func(lambda x: 2*x*x, 5)

نکته: تابع lambda نام خود را از محاسبات لامبدا دریافت می کنند که یک مدل محاسباتی است که توسط کلیسای آلونزو اختراع شده است.

توابع لامبدا مانند توابع معمولی، قدرتمند نیستند.
آنها تنها می توانند کارهایی را انجام دهند که نیاز به یک عمل واحد دارند – معمولا معادل یک خط کد است.
مثال:

#named function
def polynomial(x):
    return x**2 + 5*x + 4
print(polynomial(-4))

#lambda
print((lambda x: x**2 + 5*x + 4) (-4))

خروجی:

>>>
0
0
>>>

نکته: در کد بالا، ما یک تابع ناشناس ایجاد کردیم و با یک استدلال آن را نامگذاری کردیم.

توابع lambda را می توان به متغیرها اختصاص داد و از توابع عادی استفاده کرد.
مثال:

double = lambda x: x * 2
print(double(7))

خروجی:

>>>
14
>>>

نکته:با این حال، به ندرت دلیل خوبی برای انجام این کار وجود دارد – معمولا بهتر است یک تابع با def تعریف کنیم.

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۴۳
سعید دامغانیان

برنامه نویسی تابع گرا یا functional programming

برنامه نویسی تابع گرا یک سبک برنامه نویسی است که بر اساس توابع است.
بخش کلیدی برنامه نویسی تابع گرا در پایتون، توابع مرتبه بالاتر است. ما این ایده را به طور خلاصه در درس قبلی در مورد توابع به عنوان اشیا دیده ایم. توابع مرتبه بالاتر، توابع دیگر را به عنوان آرگومان دریافت می کنند، و یا آنها را به عنوان نتایج به ارمغان می آورند.
مثال:

def apply_twice(func, arg):
   return func(func(arg))

def add_five(x):
   return x + 5

print(apply_twice(add_five, 10))

خروجی:

>>>
20
>>>

نکته:تابع apply_twice عمل دیگری را به عنوان استدلال آن انجام می دهد و آن را دو بار در داخل بدنه کد خود فرا خوانی می کند.

توابع خالص و ناخالص (pure and impure functions)

برنامه نویسی کاربردی به دنبال استفاده از توابع خالص است. توابع خالص عوارض جانبی ندارند و مقداری را که فقط به استدلال آنها بستگی دارد، بازمی گرداند.
این کار در ریاضی به این صورت عمل می کند: به عنوان مثال، cos (x)، برای همان مقدار x، همیشه همان نتیجه را به دست می آورد.
در زیر نمونه هایی از توابع خالص و ناخالص هستند.
عملکرد خالص:

def pure_function(x, y):
  temp = x + 2*y
  return temp / (2*x + y)

عملکرد ناخالص:

some_list = []

def impure(arg):
  some_list.append(arg)

نکته:تابع بالا خالص نیست، زیرا حالت some_list را تغییر داد.

استفاده از توابع خالص هم مزایا و هم معایب دارد.
توابع خالص عبارتند از:
– ساده تر در شفاف سازی و تست کردن
– کارآمدتر. هنگامی که عملکرد برای یک ورودی ارزیابی می شود، نتیجه می تواند ذخیره شود و به دفعه بعد که عملکرد آن ورودی مورد نیاز است، نسبت دهد تا تعداد دفعاتی که تابع فراخوانی می شود کاهش یابد. به این مدل memoization یا به اصطلاح یادداشت برداری می گویند.
– راحت تر به صورت parallel یا موازی اجرا شود.

نکته:معایب اصلی استفاده از تنها توابع خالص این است که آنها وظیفه ساده و آسان I / O را به شدت پیچیده می کنند، زیرا به نظر می رسد به طور ذاتی نیاز به عوارض جانبی دارد. همچنین می توانند در بعضی موقعیت ها دشوار باشند.

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۴۱
سعید دامغانیان

توابع کاربردی

پایتون دارای بسیاری از توابع و روش های مفید درونیست که برای انجام وظایف مشترک است.
join – پیوستن به یک لیست از رشته ها با رشته دیگری به عنوان جدا کننده.
replace – جایگزین یک رشته در رشته با دیگری است.
start with و endswith – تعیین اینکه آیا زیر رشته در ابتدای و پایان رشته وجود دارد.
برای تغییر case یک رشته، می توانید از حروف بزرگ و کوچک استفاده کنید.
روش split ، مخالف join است، و یک رشته را با یک جداکننده خاص به یک لیست تبدیل می کند.
بعضی مثالها:

print(", ".join(["spam", "eggs", "ham"]))
#prints "spam, eggs, ham"

print("Hello ME".replace("ME", "world"))
#prints "Hello world"

print("This is a sentence.".startswith("This"))
# prints "True"

print("This is a sentence.".endswith("sentence."))
# prints "True"

print("This is a sentence.".upper())
# prints "THIS IS A SENTENCE."

print("AN ALL CAPS SENTENCE".lower())
#prints "an all caps sentence"

print("spam, eggs, ham".split(", "))
#prints "['spam', 'eggs', 'ham']"

برای پیدا کردن حداکثر یا حداقل برخی از اعداد یا یک لیست، می توانید از max یا min استفاده کنید.
برای پیدا کردن فاصله از یک عدد از صفر (مقدار مطلق آن)، از abs استفاده کنید.
برای گرد کردن یک عدد به تعداد مشخصی از اعشار، از round استفاده کنید.
برای پیدا کردن مجموع لیست، از sum استفاده کنید.
بعضی مثالها:

print(min(1, 2, 3, 4, 0, 2, 1))
print(max([1, 4, 9, 2, 5, 6, 8]))
print(abs(-99))
print(abs(42))
print(sum([1, 2, 3, 4, 5]))

خروجی:

>>>
0
9
99
42
15
>>>

اغلب در اظهارات شرطی مورد استفاده قرار می گیرد، همه و هر یک را به عنوان یک استدلال می گیرند، و همگی و یا یکی از آن ها مقدار true را در صورتی که برابر با مقدار درست باشد بر می گرداند.
تابع شمارش یا enumerate را می توان برای تکرار از طریق ارزش ها و شاخص های یک لیست به طور همزمان استفاده می شود.
مثال:

nums = [55, 44, 33, 22, 11]

if all([i > 5 for i in nums]):
   print("All larger than 5")

if any([i % 2 == 0 for i in nums]):
   print("At least one is even")

for v in enumerate(nums):
   print(v)

خروجی:

>>>
All larger than 5
At least one is even
(0, 55)
(1, 44)
(2, 33)
(3, 22)
(4, 11)
>>>
۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۳۹
سعید دامغانیان

string format

قالب بندی رشته یا String formatting

تا کنون، برای ترکیب رشته ها و غیر رشته ها در پایتون، غیر رشته ها را به رشته تبدیل کرده و آنها را به هم اضافه کرده اید.
قالب بندی رشته (یا string formatting) یک راه قوی تر برای غیر رشته ها ،درون رشته ها را می سازد. قالب بندی رشته با استفاده از روش های فرمت رشته ،برای جایگزینی تعدادی از استدلال ها در رشته است.
مثال:

# string formatting
nums = [4, 5, 6]
msg = "Numbers: {0} {1} {2}". format(nums[0], nums[1], nums[2])
print(msg)

خروجی:

>>>
Numbers: 4 5 6
>>>

نکته:هر استدلال تابع فرمت در رشته در موقعیت متناظر قرار می گیرد، که با استفاده از جفت های مجزا {} مشخص می شود.

قالب بندی رشته نیز با استدلال های نامگذاری انجام می شود.
مثال:

a = "{x}, {y}".format(x=5, y=12)
print(a)

خروجی:

>>>
5, 12
>>>
۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۳۸
سعید دامغانیان

list comprehensions

درک مطلب ها یک راه مفید برای ایجاد سریع لیست هایی است که محتویات آنها به یک قاعده ساده احتیاج دارند.
به عنوان مثال، ما می توانیم موارد زیر را انجام دهیم:

# a list comprehension
cubes = [i**3 for i in range(5)]

print(cubes)

خروجی:

>>>
[0, 1, 8, 27, 64]
>>>

نکته:فراخوانی فهرست توسط نماد set-builder در ریاضیات الهام گرفته شده است.

درک مطلب نیز می تواند شامل یک عبارت if باشد تا یک شرط را برای مقادیر موجود در لیست اجرا کند.
مثال:

evens=[i**2 for i in range(10) if i**2 % 2 == 0]

print(evens)

خروجی:

>>>
[0, 4, 16, 36, 64]
>>>

تلاش برای ایجاد یک لیست در محدوده بسیار گسترده باعث MemoryError خواهد شد.
این کد یک مثال را نشان می دهد که درک مطلب از حافظه خارج می شود.

even = [2*i for i in range(10**100)]

خروجی:

>>>
MemoryError
>>>

نکته:این مسئله توسط ژنراتورها حل شده است که در ماژول بعدی پوشش داده شده است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۳۶
سعید دامغانیان

list slices

لیست برش ها یک روش پیشرفته تر برای بازیابی مقادیر از یک لیست را فراهم می کند. برش فهرست اصلی شامل index سازی یک لیست با دو عدد صحیح جدا شده است. یک لیست جدید با تمام مقادیر موجود در لیست قدیمی بین شاخص ها را نشان می دهد.
مثال:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])

خروجی:

>>>
[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]
>>>

نکته:همانند آرگومان هایی برای Range، اولین شاخص ارائه شده در یک slice در نتیجه گنجانده شده است، اما در slice دوم آن نیست.

اگر شماره اول در یک slice حذف شده باشد،مقدارش برای شروع لیست در نظر گرفته شده است.
اگر عدد دوم حذف شده باشد، مقدارش برای پایان در نظر گرفته شده است.
مثال:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[:7])
print(squares[7:])

خروجی:

>>>
[0, 1, 4, 9, 16, 25, 36]
[49, 64, 81]
>>>

نکته:sliceنیز می تواند بر روی tuple نیز انجام شود.

لیست های slice همچنین می توانند یک عدد سوم داشته باشند، که نشان دهنده مرحله است، فقط شامل مقادیر جایگزین در slice می شود.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[::2])
print(squares[2:8:3])

خروجی:

>>>
[0, 4, 16, 36, 64]
[4, 25]
>>>

نکته:[2: 8: 3] شامل عناصر شروع از 2 تا 8 با واسته 3 تایی است.

مقادیر منفی را می توان در slice لیست (و فهرست بندی عادی لیست) استفاده کرد. وقتی مقادیر منفی برای مقادیر اول و دوم در یک تکه (یا یک شاخص عادی) استفاده می شود، از پایان لیست محاسبه می شود.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[1:-1])

خروجی:

>>>
[1, 4, 9, 16, 25, 36, 49, 64]
>>>

نکته:اگر یک مقدار منفی برای این مرحله استفاده شود، slice برعکس انجام خواهد شد.
با استفاده از [:: - 1] به عنوان یک slice یک روش رایج و اصیل برای تبدیل یک لیست است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۳۵
سعید دامغانیان

u30753_Untitled-1.jpg

۲ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۲۵
سعید دامغانیان

: برنامه ای بنویسید که دو عدد را از ورودی بگیرد و تمام اعداد اول مابین آنها را نمایش دهد


# Python program to print all  

# prime number in an interval 

  

start =int( input("Please Enter Statr Number: "))


end =  int( input("Please Enter End Number: "))

  

for val in range(start, end + 1): 

      

   # If num is divisible by any number   

   # between 2 and val, it is not prime  

   if val > 1: 

       for n in range(2, val): 

           if (val % n) == 0: 

               break

       else: 

           print(val) 


u76042_01.jpg

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۸ ، ۱۱:۲۴
سعید دامغانیان