در این قسمت از آموزش پایتون دیباگ کردن و لاکپشت turtle را یاد میگیریم، یک از مهمترین مهارت هایی که شما بایستی به عنوان یک برنامه نویس موفق یاد بگیرید، دیباگ کردن است.
برای اینکه در برنامه نویسی موفق بشیم بایستی قدم های کوچک برداریم چون برنامه ها می تونن خیلی پیچیده و سخت و درهم برهم بشن و وقتی وارد این جور برنامه ها بشیم ممکنه سرخورده و ناامید بشیم.
ولی وقتی برنامه را به قسمت های کوچک میشکنیم و تا جایی که میشه اونو به برنامه های کوچک تر تقسیم میکنیم، میتونیم خیلی راحت تر اونها رو دیباگ کنیم و مشکل حل کنیم و در واقع یه موفقیت کوچیک بدست میاریم .
این موفقیت های کوچیک در مغز ما باعث ترشح مواد شیمیایی میشن که باعث میشن ما حس خوبی پیدا کنیم و خوشحال بشیم و همین باعث میشه که برای حل مشکلات بعدی انگیزه داشته باشیم .
پس همیشه قدم های کوچ بردارین و مشکل های کوچک رو حل کنین.
نصب ویژوال استدیو کد vs code
برای نصب وی اس کد باید اول فایل نصبی رو از سایت ماکروسافت دانلود کنید از این لینک
بعد از نصب افزونه پایتون رو به vs code اضافه کنید :
برای این کار vs code را باز کنید کلید های Ctrl+shift+x را بزنید تا پنجره marcketplace باز بشه و بعد در قسمت سرچ تایپ کنید python ، وقتی افزونه پایتون ،Python for VSCode پیدا شد روی گزینه نصب کلیک کنید تا به vs code اضافه بشه.
یک پوشه جدید برای پروژه پایتون در هر جایی از سیستمتون ایجاد کنید و در vs code از منو فایل گزینه open folder بزنید و پوشه ای که ساختید را انتخاب کنید .
بعد کلید های ctrl+shift+p را بزنید و در منوی باز شده مفسر پایتون رو انتخاب کنید
حالا میتونید شروع کنید به کد نویسی پایتون در vs code
نکات دیباگ کردن
- مثل یک کاراگا ماهر باشین ، یک کاراگاه ماهر به همه شک میکنه ، شما هم بایستی به همه چیز شک داشته باشین که ممکنه غلط باشه .
- سرنخ هارو دنبال کنین ، همیشه دنبال پیغام های برنامه و خروپی پرینت روی صفحه نمایش باشین و ببینید دارند به چی و کجا اشاره می کنند.
انواع رایج ارور ها
-
ParseError
پارس ارور یا خطای نوشتاری زمانی اتفاق می افته که ما در نوشتن کلمات کلیدی و یا کارکترها اشتباه میکنیم ، مثلا یه کاما یا کوت یا نقطه جا میزاریم یا کلمات کلیدی رو اشتباه تایپ میکنیم .
در مثال زیر یک پارس ارور وجود داره :
current_time_str = input("What is the current time (in hours 0-23)?")
wait_time_str = input("How many hours do you want to wait"
current_time_int = int(current_time_str)
wait_time_int = int(wait_time_str)
final_time_int = current_time_int + wait_time_int
print(final_time_int)
-
TypeError
تایپ ارور یا خطای نوع زمانی اتفاق می افته که شما سعی کنین دو تا شی که از یک نوع نیستند رو باهم ترکیب کنین
a = input('wpisz godzine')
x = input('wpisz liczbe godzin')
int(x)
int(a)
h = x // 24
s = x % 24
print (h, s)
a = a + s
print ('godzina teraz', a)
-
NameError
نیم ارور یا خطای نامگذاری زمانی اتفاق می افته که قبل از اینکه به متغیری مقدار دهی کنین از اون متغیر استفاده کنین .
str_time = input("What time is it now?")
str_wait_time = input("What is the number of nours to wait?")
time = int(str_time)
wai_time = int(str_wait_time)
time_when_alarm_go_off = time + wait_time
print(time_when_alarm_go_off)
-
ValueError
ولیو ارور یا خطای مقداری هم زمانی اتفاق می افته که ما نوع مقداری رو به تابعی بفرستیم که اون تابع نوع دیگری رو انتظار داشته و قبول داشته
مثلا برای تابع int مقدار حروف بفرستیم
current_time_str = input("What is the current time (in hours 0-23)?")
current_time_int = int(current_time_str)
wait_time_str = input("How many hours do you want to wait")
wait_time_int = int(wait_time_str)
final_time_int = current_time_int + wait_time_int
print(final_time_int)
ماژول لاکپشت turtle :
در پایتون ماژول های بسیار زیادی وجود دارند که ما میتونیم از اونها استفاده کنیم و برنامه های برنامه های پیچیده بنویسیم مثلا برنامه برای ارسال به ایمیل انبوه یا برنامه برای محاسبات ریاضی سنگین و …
در این قسمت می خواهیم با یه ماژول آشنا بشیم به اسم ماژول لاکپشت (turtle) ، این ماژول یه تصویر تو صفحه نمایش ایجاد میکنه و در اون یه لاکپشت میسازه و این لاکپشت اینطوری در نظر بگیرین که حرف میفهمه و ما هر دستوری بهش بدیم اجرا میکنه ، مثلا برو ،جلو بیا عقب ، بچرخ و … .
ما ازین به بعد ازین ماژول استفاده میکنیم که خیلی از مفاهیم برنامه نویسی پایتون با اون یاد بگیریم چون که به صورت ویژوال قابل دیدنه و فهم یه سری از مسائل خیلی راحت تر میکنه.
خب برای اینکه از ماژول در پایتون استفاده کنیم از دستور import و بعد نام ماژولی که می خوایم استفاده می کنیم . که در اینجا به این صورت میشه :
import turtle# allows us to use the turtles library
wn = turtle.Screen()# creates a graphics window
ali = turtle.Turtle()# create a turtle named ali
ali.forward(150)# tell ali to move forward by 150 units
ali.left(90)# turn by 90 degrees
ali.forward(75)# complete the second side of a rectangle
ما الان در خط اول ماژول لاکپشت ایمپورت کردیم به برنامه مون
در خط دوم یه پنجره جدید ایجاد کردیم
در خط سوم یک لاکپشت به اسم علی تعریف کردیم
در خط چهارم بهش گفتیم که ۱۵۰ واحد به جلو حرکت کنه
در خط پنجم گفتیم که ۹۰ درجه بچرخه
و در خط چهارم گفتیم ۷۵ واحد به جلو حرکت کنه
یک شی در پایتون میتونه ویژگی های زیادی داشته باشه ، شی لاک پشت هم همینطوره ما میتونیم ویژگی ها ی مختلفشو مثل رنگ و اندازه و .. تغییر بدیم :
import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")# set the window background color
taghi = turtle.Turtle()
taghi.color("blue")# make taghi blue
taghi.pensize(3)# set the width of her pen
taghi.forward(50)
taghi.left(120)
taghi.forward(50)
wn.exitonclick()#wait for a user click on the canvas
گله لاک پشت ها :
همونطوری که در مورد متغیر ها دیدیم که میتونیم همزمان هر چند تا که میخوایم متغیر تعریف کنیم در مورد شی لاکپشت هم همینطوره ، هر چند تا بخوایم میتونیم تو یه برنامه لاکپشت تعریف کنیم :
import turtle
wn = turtle.Screen()# Set up the window and its attributes
wn.bgcolor("lightgreen")
taghi = turtle.Turtle()# create taghi and set some attributes
taghi.color("hotpink")
taghi.pensize(5)
ali = turtle.Turtle()# create ali
taghi.forward(80)# Let taghi draw an equilateral triangle
taghi.left(120)
taghi.forward(80)
taghi.left(120)
taghi.forward(80)
taghi.left(120)# complete the triangle
taghi.right(180)# turn taghi around
taghi.forward(80)# move her away from the origin
ali.forward(50)# make ali draw a square
ali.left(90)
ali.forward(50)
ali.left(90)
ali.forward(50)
ali.left(90)
ali.forward(50)
ali.left(90)
wn.exitonclick()
حلقه تکرار for :
وقتی سعی میکنبم یه شکل هندسی با لاکپشتمون بکشیم داریم یه کار تکراری رو انجام میدیم مثلا وقتی میخوایم مربع بکشیم در واقع داریم ۴ بار یه کار خط کشیدن ساده رو تکرار کینیم ، حلقه های تکرار برای این هستن که این کار های تکراری رو برای ما انجام بدن . پرکار برد ترین حلقه تکرار با کلمه کلیدی for هستش و به صورت زیر نوشته میشه
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
الان توی این حلقه ما یک متغیر x تعریف کردیم که در لیست Fruits میچرخه و تک تک مقدارهاشونو پرینت میکنه
توجه داشته باشین که بعد از اینکه دستور for نوشتین حتما باید آخر خط علاکت : بزارین و تمامی دستوراتی که میخواین در حلقه باشن با یک tab جلو تر تایپ کنین
یک مثال دیگه
Names=["Joe", "Amy", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
for name in names:
print("Hi", name, "Please come to my party on Saturday!")
نحوه عملکرد حلقه for در فلوچارت
حلقه for و لاکپشت :
حالا که با حلقه For اشنا شدیم میتونیم خیلی از کارهایی که با لاکپشت انجام میدیم رو ساده تر و کم حجم تر بکنیم
برای مثال با لاکپشتمون و حلقه for یه مربع میکشیم
import turtle# set up ali
wn = turtle.Screen()
ali = turtle.Turtle()
for i in [0, 1, 2, 3]:# repeat four times
ali.forward(50)
ali.left(90)
wn.exitonclick()
یک مثال دیگه : اینبار یک مربع رنگی میکشیم
import turtle# set up ali
wn = turtle.Screen()
ali = turtle.Turtle()
for aColor in ["yellow", "red", "purple", "blue"]:
ali.color(aColor)
ali.forward(50)
ali.left(90)
wn.exitonclick()
تابع range :
این یکی از توابع داخلی پایتونه که یه رنج عددی که ما نقطه شروع و پایانشو مشخص میکنیم بهمون میده مثلا :
Range(0,10) یا range(10)
یعنی یک رنج از ۰ تا ۱۰ برای من ایجاد کن ۰و۱و۲و۳و۴و۵و۶و۷و۸و۹
print(list(range(4)))
خروجی [۰, ۱, ۲, ۳]
print(list(range(1, 5)))
خروجی [۱, ۲, ۳, ۴]
ما میتونیم از تابع range در حلقه for استفاده کنیم که بهش بفهمونیم که میخوایم چند بار تکرار بشه . مثال زیر :
for i in range(4):
alex.forward(50)
alex.left(90)
یک مربع برامون میکشه با طول ۵۰ واحد
تابع range به صورت پیش فرض یک واحد یک واحد جلو میره ،ما میتونیم به دستور رنج بگیم که چند تا چندتا حرکت کنه به این صورت :
range(شروع, پایان, قدم)
print(list(range(0, 19, 2)))
خروجی [۰, ۲, ۴, ۶, ۸, ۱۰, ۱۲, ۱۴, ۱۶, ۱۸]
print(list(range(0, 20, 2)))
خروجی [۰, ۲, ۴, ۶, ۸, ۱۰, ۱۲, ۱۴, ۱۶, ۱۸[
ما میتونیم range برعکس هم داشته باشیم
print(list(range(10, 0, -1)))
خروجی [۱۰, ۹, ۸, ۷, ۶, ۵, ۴, ۳, ۲, ۱]
ویژگی های دیگر لاکپشت turtle
ما میتونیم لاکپشتمونو حرکت بدیم ولی خطی نکشیم برای اینکار از ویژگی up استفاده میکنیم
ali.up()
ali.forward(100) # this moves ali, but no line is drawn
ali.down()
میتونیم شکل لاکپشتمون هم عوض کنیم ، برای لاکپشت ین اشکال وجود دارند
: arrow, blank, circle, classic, square, triangle, turtle.
و به اینصورت شکلشو عوض میکنیم :
ali.shape(“circle “)
یا سرعتشو تغییر بدیم
alex.speed(10)
یک مثال دیگه از لاکپشت:
import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")
tess = turtle.Turtle()
tess.color("blue")
tess.shape("turtle")
print(list(range(5, 60, 2)))
tess.up()# this is new
for size in range(5, 60, 2):# start with size = 5 and grow by 2
tess.stamp() # leave an impression on the canvas
tess.forward(size) # move tess along
tess.right(24) # and turn her
wn.exitonclick()
جدول ویژگی های لاکپشت
Method | Parameters | Description |
Turtle | None | Creates and returns a new turtle object |
forward | distance | Moves the turtle forward |
backward | distance | Moves the turle backward |
right | angle | Turns the turtle clockwise |
left | angle | Turns the turtle counter clockwise |
up | None | Picks up the turtles tail |
down | None | Puts down the turtles tail |
color | color name | Changes the color of the turtle’s tail |
fillcolor | color name | Changes the color of the turtle will use to fill a polygon |
heading | None | Returns the current heading |
position | None | Returns the current position |
goto | x,y | Move the turtle to position x,y |
begin_fill | None | Remember the starting point for a filled polygon |
end_fill | None | Close the polygon and fill with the current fill color |
dot | None | Leave a dot at the current position |
stamp | None | Leaves an impression of a turtle shape at the current location |
shape | shape name | Should be ‘arrow’, ‘classic’, ‘turtle’, ‘circle’ or ‘square’ |
قسمت ۱ آموزش پایتون به زبان ساده
دیدگاهتان را بنویسید