کد زیر یک عدد رو از ورودی میگیره و جمله خواسته شده سری فیبونانچی رو چاپ میکنه. دقت کنید که به صورت بازگشتی نوشته شده. سعی کنید روش غیر بازگشتی همین کد رو شما بنویسید.
#Programmer : Saeed Damghanian
#Web : Pyschool.blg.ir
# Function for nth Fibonacci number
def Fibonacci(n):
if n<0:
print("Incorrect input")
# First Fibonacci number is 0
elif n==1:
return 0
# Second Fibonacci number is 1
elif n==2:
return 1
else:
return Fibonacci(n-1)+Fibonacci(n-2)
# Driver Program
n=int(input("Pleas Enter n: "))
print(Fibonacci(n))
#------------Telegram: @Ghoghnous_Iran-----------------------
برنامه ای نوشتم که تعدادی عدد رو داخل خود برنامه تعریف کرده و ســــپس با روش مرتب سازی حبابی مرتبشون کنه. حالا شما سعی کنید برنامه ای بنویسید که همین اعداد رو از ورودی گرفته و مرتب کنه. میتونید یک شرط بگذارید که اگه کاربر کاراکتر خاصی رو وارد کرد به معنای پایان اعداد وارد شده باشه. یا میتونید اعداد رو یکجا بگیرید و پردازش کنید. اگه سوالی بود در خدمت هستم.
#Programmer : Saeed Damghanian
#Web : Pyschool.blg.ir
def bubbleSort(arr):
n = len(arr)
# Traverse through all array elements
for i in range(n):
# Last i elements are already in place
for j in range(0, n-i-1):
# traverse the array from 0 to n-i-1
# Swap if the element found is greater
# than the next element
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
# Driver code to test above
arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print ("Sorted array is:")
for i in range(len(arr)):
print ("%d" %arr[i])
#------------Telegram: @Ghoghnous_Iran-----------------------
برنامه زیر ضرائب معادله درجه 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-----------------------
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()
کدی که در ذیل مشاهده میکنید یک خورشید را به صورت خطهای هندسی رسم کرده و رنگ میزند. #جالبناک
from turtle import *
color('blue', 'yellow')
begin_fill()
while True:
forward(200)
left(100)
if abs(pos()) < 1:
break
end_fill()
done()
خروجی کد بالا شکلی مطابق ذیل است. با ما همراه شوید . مدرسه پایتون
برنامه ای نوشتم که آدرس یک سایت رو بگیره و آی پی سایت رو نمایش بده. خیلی ساده (البته گرافیکی* #پایتون )
#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()
برنامه نویسی تابع گرا یک سبک برنامه نویسی است که بر اساس توابع است.
بخش کلیدی برنامه نویسی تابع گرا در پایتون، توابع مرتبه بالاتر است. ما این ایده را به طور خلاصه در درس قبلی در مورد توابع به عنوان اشیا دیده ایم. توابع مرتبه بالاتر، توابع دیگر را به عنوان آرگومان دریافت می کنند، و یا آنها را به عنوان نتایج به ارمغان می آورند.
مثال:
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 عمل دیگری را به عنوان استدلال آن انجام می دهد و آن را دو بار در داخل بدنه کد خود فرا خوانی می کند.
برنامه نویسی کاربردی به دنبال استفاده از توابع خالص است. توابع خالص عوارض جانبی ندارند و مقداری را که فقط به استدلال آنها بستگی دارد، بازمی گرداند.
این کار در ریاضی به این صورت عمل می کند: به عنوان مثال، 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 را به شدت پیچیده می کنند، زیرا به نظر می رسد به طور ذاتی نیاز به عوارض جانبی دارد. همچنین می توانند در بعضی موقعیت ها دشوار باشند.
درباره این سایت