python

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

جلسه چهارم

استفاده از دستور 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)


برچسب‌ها:

10 نظر:

در ۱۴ مهر ۱۳۸۸ ساعت ۱۹:۱۵, Anonymous Milad گفت...

injoori ham mishod nevesht oon khatte sum ro : sum += x

 
در ۱۴ مهر ۱۳۸۸ ساعت ۲۱:۴۴, Blogger Unknown گفت...

برنامه‌ی ميلاد تو خونه‌های سفید چندتا خط اضافه مي‌كشه كه اگه "pu"، به‌جاى قبل از "for" ِ دوم، قبل از "goto" ِ اول باشه مشكل حل مي‌شه.

 
در ۱۵ مهر ۱۳۸۸ ساعت ۰:۱۴, Anonymous Milad گفت...

مشکلی نداره که. همینو برداشتم دوباره اجرا کردم مشکلی نداشت. دقیقا چیه مشکل ؟

 
در ۱۵ مهر ۱۳۸۸ ساعت ۰:۱۸, Anonymous Milad گفت...

مشکلش چیه دقیقا ؟ من که مشکلی نمی بینم.

 
در ۱۵ مهر ۱۳۸۸ ساعت ۲۱:۳۵, Anonymous آذین گفت...

کسی کوتاهتر یا با یک for نمیتونه بنویسه؟

 
در ۱۵ مهر ۱۳۸۸ ساعت ۲۱:۵۷, Blogger Unknown گفت...

ولی من همين برنامه رو كه می‌زنم سه تا خط مورب عمودی رو خونه‌هاى سفيد هست، و تا وقتى بين "for" ِاول و دوم خط خالى نيست "for" ِاول رو اجرا نمی‌كنه و مربع بزرگ رو نمی‌کشه.

 
در ۱۵ مهر ۱۳۸۸ ساعت ۲۲:۲۰, Blogger Milad گفت...

این فایل رو امتحان کنید. (همین دستورات هست) شاید مشکل از کپی کردن باشه.
http://www.persianupload.com/676588

 
در ۱۵ مهر ۱۳۸۸ ساعت ۲۲:۲۶, Blogger Milad گفت...

راستی، یادم رفت بگم که فایل py رو با python.exe که توی دایرکتوری نصب برنامه هست باز کنید. به احتمال زیاد خودش تنظیم شده.

 
در ۱۷ مهر ۱۳۸۸ ساعت ۱۷:۲۷, Blogger Unknown گفت...

بله خود برنامه درسته ولى نمی‌دونم چرا كپی‌ش مشكل داره. مرسی از توضيح و فایل.

 
در ۱۷ مهر ۱۳۸۸ ساعت ۲۳:۲۹, Blogger Milad گفت...

;)

 

ارسال یک نظر

اشتراک در نظرات پیام [Atom]

<< صفحهٔ اصلی