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

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

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

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

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

۱۷ مطلب با کلمه‌ی کلیدی «زبان برنامه نویسی پایتون» ثبت شده است

برنامه زیر ضرائب معادله درجه 2 را گرفته و معادله را حل نموده و جوابهای معادله را در صورت حقیقی بودن نمایش می‌دهد. سعی کنید برنامه‌ای بنویسید که جوابهای موهمومی معادله را نیز محاسبه و چاپ کند.


#Programmer : Saeed Damghanian

#Web : Pyschool.blg.ir


import math

a=int(input("Please Enter a: "))

b=int(input("Please Enter b: "))

c=int(input("Please Enter c: "))

delta=b*b-4*a*c

if delta==0 :

    x=(-b + math.sqrt(delta))

    print("Moadele Yek javab darad. X=",x)

elif delta<0:

    print("Moadele javabe haghighi nadarad!")

else :    

    x1=(-b + math.sqrt(delta))/(2*a)

    x2=(-b - math.sqrt(delta))/(2*a)

    print("Moadele 2 javab darad.\n X1= ",x1, "\nX2= " , x2)


#------------Telegram: @Ghoghnous_Iran-----------------------


 

h909262_Untitled.png

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

  turtle و math  کدی نوشتم که شکل یک لانه ی زنبور را ترسیم کند. با استفاده از


# Hive

# By: Saeed Damghanian


from turtle import *

from math import *


def line(x, y, x2, y2):

    ''' Draw a line from (x, y) to (x2, y2) '''

    penup()

    goto(x, y)

    pendown()

    goto(x2, y2)



def draw_tree(x, y, size, angle,n):

    ''' Draw a tree of given size and angle at (x, y) '''

    if n==1:

        return

    if size < 4:

        return

    x2 = x + size * cos(radians(angle))

    y2 = y + size * sin(radians(angle))

    line(x, y, x2, y2)

    draw_tree(x2, y2, size , angle + 60,n-1)

    draw_tree(x2, y2, size , angle - 60,n-1)



# main program

#tracer(0,0)


#speed(10)

#delay(2)

draw_tree(0, 0, 50, 90,10)

mainloop()


u544287_Untitled.png

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

کدی که در ذیل مشاهده می‌کنید یک خورشید را به صورت خطهای هندسی رسم کرده و رنگ میزند. #جالبناک


from turtle import *

color('blue', 'yellow')

begin_fill()

while True:

    forward(200)

    left(100)

    if abs(pos()) < 1:

        break

end_fill()

done()


خروجی کد بالا شکلی مطابق ذیل است. با ما همراه شوید.. . مدرسه پایتون

n488379_Untitled.png

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

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


#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 را به شدت پیچیده می کنند، زیرا به نظر می رسد به طور ذاتی نیاز به عوارض جانبی دارد. همچنین می توانند در بعضی موقعیت ها دشوار باشند.

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

u30753_Untitled-1.jpg

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

Tuple در پایتون

Tuple ها به لیستها بسیار شبیه هستند، به جز اینکه Tuple ها غیرقابل تغییر هستند .
همچنین، آنها با استفاده از پرانتز، به جای براکت مربعی، ایجاد می شوند.
مثال:

words = ("spam", "eggs", "sausages",)

شما می توانید با مقادیر خود در مقیاس به همان اندازه که با لیست ها دسترسی داشتید دسترسی پیدا کنید:

print(words[0])

تلاش برای تخصیص یک مقدار در یک Tuple، یک TypeError را ایجاد می کند.

words[1] = "cheese"

خروجی:

>>>
TypeError: 'tuple' object does not support item assignment
>>>

نکته:مانند لیست ها و dictionary ها، tuple ها را می توان در داخل یکدیگر قرار داد.

tuple ها را می توان فقط با جدا کردن مقادیر با کاما و بدون پرانتز ایجاد کرد.
مثال:

my_tuple = "one", "two", "three"
print(my_tuple[0])

خروجی:

>>>
one
>>>

یک tuple خالی با استفاده از یک جفت پرانتز خالی ایجاد می شود.

tpl = ()

نکته:tuple ها سریعتر از لیست ها هستند اما قابل تغییر نیستند.

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

توابع dictionary

درست مانند لیست ها، کلید های dictionary را می توان به مقادیر مختلف اختصاص داد.
با این حال، بر خلاف لیست ها، یک کلید dictionary جدید نیز می تواند یک مقدار تعیین شود، نه فقط آنهایی که قبلا وجود داشته اند.

squares = {1: 1, 2: 4, 3: "error", 4: 16,}
squares[8] = 64
squares[3] = 9
print(squares)

خروجی:

{8: 64, 1: 1, 2: 4, 3: 9, 4: 16}

برای تعیین اینکه آیا یک کلید در یک dictionary است، می توانید از in و not in استفاده کنید، همانطور که می توانید برای یک لیست نیز استفاده کنید.
مثال:

nums = {
  1: "one",
  2: "two",
  3: "three",
}
print(1 in nums)
print("three" in nums)
print(4 not in nums)

خروجی:

>>>
True
False
True
>>>

یکی از متد های مفید پایتون که در Dictionary می باشد get است. این همان چیزی است که نمایه سازی (index) می کند، اما اگر کلید در dictionary یافت نشد، مقدار دیگر مشخص شده را به جای آن (به صورت پیش فرض “none”) به دست می آید.
مثال:

pairs = {1: "apple",
  "orange": [2, 3, 4], 
  True: False, 
  None: "True",
}

print(pairs.get("orange"))
print(pairs.get(7))
print(pairs.get(12345, "not in dictionary"))

خروجی:

>>>
[2, 3, 4]
None
not in dictionary
>>>
۰ نظر موافقین ۰ مخالفین ۰ ۰۷ تیر ۹۸ ، ۲۲:۰۰
سعید دامغانیان