مکانی برای تکمیل جزوه های ناقصتان!

۵ مطلب با کلمه‌ی کلیدی «برنامه نویسی(پایتون)» ثبت شده است

عملگر ":" در پایتون

فرض کنید یک رشته یا آرایه دارید، وقتی می خواهید یکی از خانه های آن را بگیرید، اسمش را می نویسید و جلویش [اندیس مورد نظر] را می نویسید.

*اندیس موردنظر ==> شماره ی خانه ی موردنیاز از آرایه یا رشته

برای مثال:


متن برنامه:
s = "salam helli"
a = [1, 3, 2, "sa", "a", 10]
print(s[9])
print(s[1])


خروجی:
1
3


هر خانه در رشته یا آرایه با دو شماره یا اندیس شناخته می شود:

1.از اول
برای مثال در رشته ی "salam helli" اندیس شماره ی 4 متعلق به حرف m است. (اندیس ها هم در آرایه و هم در رشته از 0 شروع می شوند.)

2.از آخر
برای مثال در رشته ی "salam helli" اندیس شماره ی 4- متعلق به چهارمین حرف از آخر رشته یعنی e است. (توجه کنید وقتی از اندیس های منفی استفاده می کنید، آخرین حرف رشته یا همان آخرین عضو آرایه 1- است و 0- نداریم!)


با استفاده از عملگر ":" می توانید بخشی از آرایه یا رشته را داشته باشید.

برای مثال:

متن برنامه:
s = "salam helli"
print(s[1:9])


خروجی:
'alam hel'

*توجه کنید در این جا از عضو اول تا یکی قبل از عضو آخری که شما تعیین کرده اید انتخاب می شود.
مثلا در مثال بالا از عضو یکم تا عضو هشتم خروجی داده شده است.


اگر طرف اول را خالی بگذارید، پایتون بصورت پیشفرض آن را 0، و اگر طرف دوم را خالی بگذارید پایتون بصورت پیش فرض (اندیس آخرین خانه + 1) در نظر می گیرد.
برای مثال:


متن برنامه:
s = "salam helli"
print(s[:5])
print(s[6:])
print(s[:])


خروجی:
salam
helli
salam helli

*اگر در استفاده ی از ":" شماره ی اندیس را خیلی زیاد یا خیلی کم بدهید برنامه اروری نخواهد داد.
برای مثال:


متن برنامه:
s = "salam helli"
print(s[:200])
print(s[-900:])


خروجی:
salam helli
salam helli

می توانید خانه ها را چند خانه در میان انتخاب کنید. با اضافه کردن یک ":" دیگر و عدد آخر
عدد آخر اگر 2 باشد یکی درمیان انتخاب می شود، اگر 3 باشد دو تا درمیان، اگر 2- باشد از آخر به اول یکی درمیان، اگر 3- باشد از آخر دوتا درمیان و...
برای مثال:

متن برنامه:
s = "salam helli"
print(s[0:11:2])
print(s[::2])
print(s[1:11:2])


خروجی:
slmhli
slmhli
aa el

برای مثال:
متن برنامه:
s = "salam helli"
print(s[::-1])
print(s[::-2])
print(s[-2::-2])


خروجی:
illeh malas
ilhmls
le aa

۱۹ آذر ۹۴ ، ۱۲:۱۰ ۲ نظر

چند فرکتال جالب و بدردبخور

سعی کنید اول باتوجه به تصویر نهایی قرارداده شده از فرکتال، برنامه شان را بنویسید، اگر نتوانستید نگاهی به برنامه ها هم داشته باشید.


دانلود و مشاهده ی بقیه ی فرکتال ها در ادامه ی مطلب

ادامه مطلب...
۱۴ آبان ۹۴ ، ۲۲:۳۰ ۳ نظر

سوال اول سوپر کوییز قبلی

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


برنامه ای بنویسید که یک ماتریس دوبعدی را از فایل sample.txt بخواند و حاصل جمع زیرماتریسی از آن که دارای بیشترین حاصل جمع خانه هایش است را چاپ کند.

*ورودی ها می توانند دارای اعداد منفی نیز باشند.


ورودی مثال

0 0 0 1 1 0

1 0 0 -7 1 0

1 0 0 0 1 -3

4 0 0 0 0 0

خروجی مثال

6


متن پاسخ

۰۸ خرداد ۹۴ ، ۱۹:۱۹ ۰ نظر

دستورات کار با فایل+ دستورات آرایه و رشته

*تمامی دستورات زیر توسط خود معلمان کامپیوتر تدریس شده اند و هیچ یک از این دستورات اضافه بر طرح درسی مدرسه نیستند.

آرایه ها
نمونه ی تشکیل یک آرایه ی دو بعدی 10×10 : 
Matrix=[[0]*10 for I in range(10)]

افزودن یک عنصر به آرایه در سمت راست آرایه (یک اندیس پس از آخرین اندیس موجود در آرایه) :
L.append(عنصر دلخواه)

افزودن یک عنصر به اندیس دلخواه در آرایه:
L.insert(عنصر دلخواه,شماره ی اندیس)

پاک کردن خانه ی Iام از آرایه (در صورتی که در ورودی تابع pop چیزی وارد نکنید بصورت پیشفرض آخرین خانه ی آرایه است.) :
L.pop(I)

پاک کردن یک عنصر از درون آرایه (اگر این عنصر درون آرایه نباشد برنامه ارور می دهد و اگر چند تا از این عنصر درون آرایه یافت می شد، اولین از سمت چپ حذف می شود.) :
L.remove(عنصر دلخواه)

رشته ها
*استفاده از دو دستور زیر در امتحان مجاز نمی باشد. توابع این دو دستور برای استفاده ی احتمالی در امتحان در زیر آن ها قرار دارد.

چسباندن خانه های دارای مقدار رشته ای درون آرایه ی A در حالی که بین هریک از خانه ها رشته ی B وجود دارد.
B.join(A)

جداسازی رشته ی A به چند خانه از محل وجود رشته های B درون A:
A.split(B)
تابع کاربردی join: #نویسنده: مهدی امیری
def join(Array,Mediator):
Ans=Array[0]
for A in Array[1:]:
Ans+=Mediator+A
return Ans

تابع کاربردی join: #نویسنده: شایان طلایی
def joi(array,target):
    ans=array[0]
    for i in range(len(array)-1):
        ans+=(target+array[i+1])
    return ans

تابع کاربردی split: #نویسنده: مهدی امیری
def Split(S,Seprator):
Last=Pointer=0
Ans=[]
while Pointer<len(S):
if S[Pointer:Pointer+len(Seprator)]==Seprator:
Ans.append(S[Last:Pointer])
Pointer=Last=Pointer+len(Seprator)
Pointer+=1
Ans.append(S[Last:])
return Ans

تابع کاربردی split: #نویسنده: پارسا صابری
def Split(String,x):
    i=0
    Output=[]
    String=list(String)
    while i<len(String):
        if String[i]==x[0]:
            j=0
            while i<len(String) and j<len(x) and String[i]==x[j]:
                j+=1
                i+=1
                print(i,j)
            if j!=len(x):
                i+=-j
            else:
                l=i-j
                while l<i:
                    String[l]=1
                    l+=1
        i+=1
    i=0
    while i<len(String):
        k=''
        while i<len(String) and String[i]!=1:
            k+=String[i]
            i+=1
        if k!='':
            Output.append(k)
        i+=1
    return Output

در صورت استفاده از توابع نوشته شده توسط بنده، طرز استفاده ی از آن ها به این شکل تغییر می کند:

چسباندن خانه های دارای مقدار رشته ای درون آرایه ی A در حالی که بین هریک از خانه ها رشته ی B وجود دارد.
join(A,B)

جداسازی رشته ی A به چند خانه از محل وجود رشته های B درون A:
split(A,B)

کار با فایل
باز کردن فایل:
File=open(حالت باز کردن فایل,آدرس فایل) 
(Modes: 'r','r+','w','w+','a','a+')

بستن فایل:
File.close()

خواندن Nکاراکتر از محلی که Pointer در آنجاست:
File.read(N)

ریختن کل فایل از جایی که Pointer در آنجاست تا انتها در یک رشته:
File.read()

خواندن از مکانی که Pointer در آنجاست تا پایان خط:
File.readline()

ریختن کل خطوط در یک آرایه به طرزی که هر خانه بیانگر یک خط باشد، از محلی که Pointer در آنجاست تا انتها:
File.readlines()

رفتن Pointer به خانه ی Nام فایل از ابتدا:
File.seek(N,0)

رفتن Pointer به Nخانه پس از خانه ای Pointer در آنجاست:
File.seek(N,1)

رفتن Pointer به Nخانه قبل از انتهای فایل:
File.seek(N,2)

الان Pointer کجاست؟ :
File.tell()
۰۷ خرداد ۹۴ ، ۱۴:۲۳

گرفتن چند ورودی در یک خط

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


زمانی که می خواهید مثلا متغیرهای عددی a,b,c را در یک خط از ورودی بگیرید می توانید بصورت زیر عمل کنید:

a,b,c=map(int,input().split())



۱۸ ارديبهشت ۹۴ ، ۱۸:۴۶ ۲ نظر