python

۱۳۸۸ آبان ۶, چهارشنبه



روز شنبه پس از توضیحات کافی در کلاس کوییزی با موضوع برجهای هانوی برگزار خواهد شد.
http://en.wikipedia.org/wiki/Tower_of_Hanoi

۱۳۸۸ آبان ۴, دوشنبه

session 5 (to be completed)

تمرین 1:
توپ را درون یک مثلث حرکت دهید.
کد مربوط به مستطیل:
from turtle import *
speed(0)
x = 50
y = 70
dx = 5
dy = 5
minx = 0
miny = 0
maxx, maxy = 200 , 100

def update(x, y, dx, dy, minx , miny, maxx, maxy):
    if y < miny or y > maxy:
        dy = -1 * dy
    if x < minx or x > maxx:
        dx = -1 * dx
    x = x + dx
    y = y + dy
    return x, y, dx, dy

def draw(x, y, dx, dy, minx , miny, maxx, maxy):
    begin_fill()
    goto(x,y)
    clear()
    circle(10)
    end_fill()


for t in range(200):
    x, y, dx, dy = update(x, y, dx, dy, minx , miny, maxx, maxy)
    draw(x, y, dx, dy, minx , miny, maxx, maxy)

تمرین 1:
توپ را درون یک هرم حرکت دهید.
کد مربوط به مستطیل:
from turtle import *
speed(0)
hideturtle()
x = 50
y = 70
z = 60
dx = 5
dy = 5
dz = 5
minx = 0
miny = 0
maxx, maxy = 200 , 100
minz, maxz = 0 , 200


def update(x, y, z, dx, dy, dz, minx , miny, minz, maxx, maxy, maxz):
    if y < miny or y > maxy:
        dy = -1 * dy
    if x < minx or x > maxx:
        dx = -1 * dx
    if z < minz or z > maxz:
        dz = -1 * dz
    x = x + dx
    y = y + dy
    z = z + dz
    return x, y, z, dx, dy, dz

def draw(x, y, z, dx, dy, dz, minx , miny, minz, maxx, maxy, maxz):
    begin_fill()
    goto(x,y)
    clear()
    circle(z/20)
    end_fill()


for t in range(200):
    x, y, z, dx, dy, dz = update(x, y, z, dx, dy, dz, minx , miny, minz, maxx, maxy, maxz)
    draw(x, y, z, dx, dy, dz, minx , miny, minz, maxx, maxy, maxz)


۱۳۸۸ آبان ۱, جمعه

شنبه كلاس با موضوع هوش مصنوعي تشكيل ميشود.

۱۳۸۸ مهر ۳۰, پنجشنبه

اين هفته شنبه كلاس تشكيل نميشود و 2 شنبه در تالار 5 تشكيل خواهد شد.

۱۳۸۸ مهر ۲۸, سه‌شنبه

Koch Snowflake in python

http://en.wikipedia.org/wiki/Koch_snowflake



by hirbod:
def koch(a,b,c,d,n):
    if n>0:
        ht()
        x=abs(a-c)
        y=abs(b-d)
        l=sqrt(x**2+y**2)
        pencolor("#000000")
        pu()    
        goto(a,b)
        th=towards(c,d)
        pd()
        seth(th)
        fd(l/3.0)
        p=pos()[0]
        q=pos()[1]
        seth(th+60)
        fd(l/3.0)
        u=pos()[0]
        v=pos()[1]
        seth(th-60)
        fd(l/3.0)
        j=pos()[0]
        k=pos()[1]
        pd()
        seth(th)
        pencolor("#FFFFFF")
        bk(l/3.0)
        fd(l/3.0)
        pencolor("#000000")
        fd(l/3.0)
        koch(p,q,u,v,n-1)
        koch(u,v,j,k,n-1)
        koch(a,b,p,q,n-1)
        koch(j,k,c,d,n-1)
    
from math import *
import os
from turtle import *

speed(0)
N=4 # Depth of Fractal
koch(-200,80,200,80,N)
koch(0,80-200*sqrt(3.0),-200,80,N)
koch(200,80,0,80-200*sqrt(3.0),N)
pu()
goto(-80,-50)
write("Koch Snowflake",False,"left",("Tahoma", 18, "italic"))
os.system("pause")

۱۳۸۸ مهر ۱۷, جمعه

اطلاعیه

کلاس درس و حل تمرین به علت آماده نبودن سایت دانشکده جهت حل تمرین در 3 جلسه ی آتی تشکیل نخواهد شد: 18 تا 27 مهر



۱۳۸۸ مهر ۱۴, سه‌شنبه

گروه اینترنتی

در این گروه عضو شوید. ارتباطات ما از این طریق خواهد بود.



Google Groups
sharifpython88
Visit this group

۱۳۸۸ مهر ۱۳, دوشنبه

جلسه چهارم

استفاده از دستور for
>>> for x in range(9):
...     print x,
...
0 1 2 3 4 5 6 7 8
>>> for c in azin:
...     print c
...
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'azin' is not defined
>>> for c in "azin":
...     print c
...
a
z
i
n
دستور range
در مثالی که بررسی کردیم، از دستور range در حلقه ی for استفاده کردیم. دستور range را به شکل مستقل از حلقه ی for هم میتوان استفاده کرد:
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(0,9)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> range(0,9,3)
[0, 3, 6] 
مشاهده میشود که دستور range در واقع لیستی از اعداد را تولید میکند، و دستور for روی اعداد این لیست کار میکند. این لیستها مختص دستور range نیستند و میتوان آنها را به صورت مستقل هم تعریف کرد.

لیست در پایتون

>>> for x in ["egg", "apple", "orange"]:

...     print x,

...

egg apple orange

لیستها را مثل همه متغیرهای دیگر میتوان استفاده کرد:

>>> a = ["egg", "apple", "orange"]

>>> for x in a:

...     print x,

...

egg apple orange

>>> a[1]

'apple'

>>> a[0]

'egg'

>>> a[-1]

'orange'

>>> a.append(34)

>>> a

['egg', 'apple', 'orange', 34] 
درباره لیستها بیشتر بدانید: راهنمای رسمی پایتون، شیرجه به پایتون
**********************************
مسایل طرح شده در کلاس
برای اینکه درس را متوجه بشوید کاملا لازم است که این مثالها را اولا سعی کنید خودتان حل کنید و ثانیا راه حلها را با دقت بررسی کنید.

یافتن مجموع اعداد یک لیست
>>> a = [1, 3, 5, 6]
>>> sum = 0
>>> for x in a:
...     sum = sum + x
...
>>> print sum
15

کشیدن یک شبکه ی 8*8


from turtle import *
for x in range(-32, 33, 8):
    penup()
    goto(-32, x)
    pendown()
    goto(32,x)
    penup()
    goto(x,-32)
    pendown()
    goto(x,32) 
 
محمد حسین:
from turtle import *
for x in range(20,161,20):
    fd(x)
    rt(90)
    fd(x)
    rt(90)
    fd(x)
    rt(90)
    fd(x)
    rt(90)
pu()
goto(160,-160)
rt(180)
pendown()
for x in range(20,141,20):
    fd(x)
    rt(90)
    fd(x)
    rt(90)
    fd(x)
    rt(90)
    fd(x)
    rt(90)


کشیدن یک صفحه شطرنج

سعی کنید برای این سوال کوتاهترین راه حل ممکن را نوشته و بفرستید، کوتاهترین راه حلی که تابحال فرستاده شده:
from turtle import *
c=["yellow","","black"]
a=1
speed(500)
for y in range (0,141,20):
 a=a*-1
 for x in range (0,141,20):
  pu()
  goto(x,y)
  pd()
  a=a*-1
  fillcolor(c[a+1])
  begin_fill()
  seth(0)
  fd(20)
  left(90)
  fd(20)
  left(90)
  fd(20)
  end_fill()

pu()
goto(0,0)
pd()
seth(0)
for i in range(4):
 fd(160)
 left(90)

pu()
goto(140,-50)
write("by Hirbod")
برنامه نوشته شده توسط نگین:
from turtle import *
goto (0,0)
goto (80,0)
goto (80,80)
goto (0,80)
goto (0,0)
x=y=-20
for a in range (4):
   x=x+20
   y=-20
   for b in range (4):
           y=y+20
           pu ()
           goto (x,y)
           begin_fill ()
           goto (x+10,y)
           goto (x+10,y+20)
           goto (x+20, y+20)
           goto (x+20,y+10)
           goto (x,y+10)
           end_fill ()
میلاد:
from turtle import *
s=Shape("compound")
c="black"
s.addcomponent(((0,0),(0,160),(40,160),(40,0)),"",c)
for y in range(0,141,40):
 s.addcomponent(((0,y+20),(0,y),(20,y),(20,y+40),(40,y+40),(40,y+20)),c,c)

register_shape("p", s)
shape("p")
stamp()
sety(-40)
stamp()
sety(-80)
stamp()
sety(-120)


برچسب‌ها:

۱۳۸۸ مهر ۱۲, یکشنبه

some of student homeworks using python turtle


برچسب‌ها:

جلسه سوم

معرفی متغیرها در پایتون

این دستورها را در محیط پایتون اجرا کنید:
a = 2
b = 4
print a + b
c = "hi,"
d = " bye!"
print c + d


انجام اعمال ریاضی و تقدم عملگرها
print 2 + 3 * 4
print 2 ** 3


معرفی دستورات مقدماتی turtle

turtle یا لاکپشت در پایتون ابزاری است که با استفاده از آن میتوان به راحتی نقاشی کشید. استفاده از آن در اولین قدمهای برنامه نویسی و حتی برای برنامه نویسهای پیشرفته بسیار لذت بخش است. برای اینکه از دستورات مربوط به آن بتوانید استفاده کنید اول باید با استفاده از دستور import آنها را وارد محیط پایتون کنید.
ساده ترین دستورات برای کشیدن مربع
from turtle import *
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)

لیست کامل دستورات turtle



معرفی دستور for
دستور for برای تکرار یک کار متوالی استفاده میشود.
همان مثال بالا برای کشیدن مربع:
for x in range(1,5):
    forward(100)
    right(90)


کشیدن دایره های با شعاعهای مختلف:
for r in range(10,51,10):
    circle(r) 
 

 
آرگومان سوم دستور range (در اینجا 10) طول قدم را مشخص میکند، قطعه کد بالا در حقیقت معادل با اجرای قطعه کد زیر است:

r=10
circle(r)
r=20
circle(r)
r=30
circle(r)
r=40
circle(r)
r=50
circle(r)

دقت کنید که اگر آرگومان دوم دستور range به جای 51، 50 گذاشته شده بود، دیگر r=50 اجرا نمیشد.

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

تمرین اختیاری:
با استفاده از turtle و حلقه ی for، یک شکل جالب بکشید.

برچسب‌ها:

جلسه اول و دوم


جلسه اول


بحث کلاسی درباره ی این سؤال که :” آیا کامپیوتر میتواند فکر کند؟"
    بحث درباره ی مفهوم فکر کردن و خصوصیات آن
    بحث درباره ی قابلیتهای کامپیوتر در برابر انسان -> چه کارهایی مهم است که کامپیوتر انجام دهد و چه کارهایی برای آن سخت است؟
        جواب: معمولا کارهایی مهم است که برای انسان دشوار یا غیر ممکن باشد، مثل انجام محاسبات سریع، و انجام کارهایی سخت تلقی میشود که انسان در انجام آنها مشکلی ندارد ولی کامپیوتر به علت تفاوت ساختاری با انسان با مشکل مواجه است، مثل دیدن، ادبیات و هنر.
    معرفی تورینگ و تست تورینگ.
    تمرین دلبخواه 1: تحقیق درباره ی ماشین تورینگ، نحوه کارکرد و اهمیت آن از نظر فلسفی. مقایسه آن با کامپیوتر های معمولی در 3 پاراگراف.
    تمرین دلبخواه 2: تحقیق درباره ی تست تورینگ. در 3 پاراگراف. مزایای آن و انتقاداتی که به آن وارد است. در اینترنت تعدادی برنامه ی تست تورینگ وجود دارد که میتوان با آنها چت کرد. در پاراگراف آخر متن چتی از خود با یکی از این چت بات ها را بگذارند که بتواند ثابت کند که با یک برنامه طرف بوده اند نه یک انسان.

جلسه دوم
در این جلسه چون خیلی از بچه ها در جلسه قبل اردوی مشهد بوده اند، بحث کلاسی جلسه قبل تکرار شد.
معرفی برنامه درسی به بچه ها.
تشریح اینکه قبلا این درس چطور ارایه میشده است و چه مشکلاتی پیش می آمده:
    1- دانشجوها بعضی ریاضی و بعضی علوم کامپیوترند و چیزی که از این درس میخواهند به شدت با هم متفاوت است.
    2- سطح آگاهی اولیه ی دانشجوها از کامپیوتر و برنامه نویسی با هم متفاوت است.
حرف زدن درباره ی راه حلهای این مسایل:
    1- زبانهای جاوا و سی پلاس پلاس زبانهای تجاری هستند و برای ساختن برنامه های تجاری در اندازه های بزرگ طراحی شده اند. در نتیجه این موضوع باعث شده است که ساختارهای پیشبینی شده در این زبانها پیچیده باشد و موارد زیادی وجود داشته باشد که برای نوشتن یک برنامه ی ساده در نظر گرفتن آنها ضروری باشد. به طور مثال کوچکترین برنامه ای که در جاوا بوسیله ی آن پیغام Hello world را میتوان روی صفحه چاپ کرد:


public class A{
public static void main(String args[]){
System.out.println("Hello world");
}
}

مفاهیمی که برای درک کامل و صحیح این برنامه ی کوچک لازمند:
class
public
static
void
main متود
String
args[] آرایه
System

مشاهده میشود که درک 8 مفهوم لازم است. البته لازم نیست که در جلسه اول تمام این مفاهیم تدریس شوند و میتوان از کنار آنها رد شد. اما وجود این همه مفاهیم مرتبط به هم در تمام طول درس روند یادگیری را برای دانشجو کند و با اشکال مواجه میکند.

برای حل این مشکلات اولا پایتون تدریس میشود و ثانیا  تقریبا نصف حجم درس به مطالب تئوری اختصاص می یابد.

موارد دیگر: http://www1.chapman.edu/~radenski/research/papers/python-iticse06.pdf

نصب پایتون بر روی کامپیوتر شخصی: 

این فایل را: http://python.org/ftp/python/2.6.3/python-2.6.3.msi  دانلود کرده و روی کامپیوتر خود نصب کنید.

اولین برنامه پایتون شما:
 در منوی استارت گزینه ی python (command line)  را انتخاب کنید. در این پنجره تایپ کنید:

print "hello"


برچسب‌ها:

اول کلمه بود