Demo v2
Demo v2
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
:Logical rowآنچه مفسر تحت عنوان بک سطر قبول دارد (سطر منطقی).
* زمانی که میخواهیم یک خط کد منطقی را در یک خط فیزیکی دیگر قرار دهیم گذاشتن بک اسلش ( \ ) الزامی است.
\ 'f = 'hello
''guys
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* از #برای کامنت کردن استفاده میکنیم ،کامنت توسط مفسر نادیده گرفته میشود.
# this is a comment
* از Docstringدر ابتدای یک تابع و یا کالس برای توضیح دادن استفاده میشود ،توسط مفسر نادیده گرفته میشود.
""""""This is a docstring
''' ''' This is a docstring
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس : 3تورفتگی و بالک بندی
* برای تو رفتگی باید از 4فاصله استفاده شود و بهتر است از Tabاستفاده نشود ،مگر اینکه کدها از شخص دیگریست و او از تب استفاده کرده
است.
x = 0
if x == 0:
)'print('x
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* برای نوشتن رشتهها از کتیشن ( ‘ ) یا دابل کتیشن ( “ ) استفاده میکنیم و گذاشتن آن الزامی است.
's = 's
"x = "s
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :5متغیر()variable
False،True : bool
: intاعداد صحیح
* متغیرها در واقع مکانهایی از حافظه هستندکه نوعی داده خاص را در خود ذخیره میکنند.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :6شناسه()identifier
* به اسامی که برای متغیر و اشیای دیگر تعریف میکنیم شناسه ( )identifierگفته میشود.
class MyClass:
pass
* شناسهی یک متغیر فقط میتواند با یکی از حروف انگلیسی ( )a-z, A-Zو یا با ) _ ( underscoreشروع شود.
_a = 4 #a = 3
ab2 = 6 2a = 5
* در پایتون از شناسه های از پیش تعریف شده پایتون نمیشود استفاده کرد.
def = 5
* بهتر است از ( lال کوچک) و ( Iآی بزرگ) استفاده نشود زیرا در بعضی IDEها مثل هماند.
* بهتر است کالس ها پاسکال کیس ( )Pascal Caseنام گذاری شوند( .اول هر کلمه حرف بزرگ).
class MyClass:
pass
* برای توابع ،متدها و متغیرها بهتر است از حروف کوچک انگلیسی استفاده شود و با ( _ ) کلمات مختلف جدا شوند.
binary_search = 4
def func():
...
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* از کلمات کلیدی (کلماتی که مختص پایتون است) نباید بهعنوان شناسه استفاده کرد.
if = 4
* برای اینکه مشخص کنیم کلمه کلیدی هست یا نه ابتدا کتابخانه keywordرا فرا میخوانیم و سپس از iskeywordاستفاده
میکنیم.
import keyword
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
باقیمانده% : توان** : جمع+ : تفریق- : ضرب* :
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
عملگر == :مقایسه انجام میدهد که آیا دو مقدار دو متغیر برابرند یا خیر .این عملگر با مساوی ( = ) تفاوت دارد.
x = 5
)print(x == 4 # -> False
)print(x == 5 # -> True
x = 5
print(x != 4) #-> True
print(x != 5) #-> False
x = 5
)print(3 > 4 # -> True
)print(3 < 5 # -> False
عملگر => (بزرگتر مساوی) :
x = 5
)print(3 >= 4 # -> False
)print(6 >= 5 # -> True
)print(5 >= 5 # -> True
x = 5
)print(3 <= 4 # -> True
)print(6 <= 5 # -> False
)print(5 <= 5 # -> True
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
x = 5
y = x
z = 2 + 6
print(x) # -> 5
print(y) # -> 5
print(z) # -> 8
* عملگرهای =<< += ,-= ,*= ,/= ,%= ,//= ,**= ,\= ,&= ,^= , >>= ,نیز به همین صورت عمل میکنند.
x = 6
x += 2 # -> x = x + 2 -> x = 6 + 2 -> 8
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* عمده کاربرد این عملگرها در عبارتهای شرطی و حلقههاست و برای بررسی همزمان دو یا چند شرط با یکدیگر استفاده میشوند و نتیجه
این عملگرها یا Trueاست یا .False
x = 4
y = 5
x = 4
y = 5
x = 4
y = 5
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* برای تست عضویت استفاده میشوند (آیا چیزی داخل چیزی میباشد؟) و نتیجه این عملگرها یا Trueاست یا .False
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* برای بررسی بودن یکی بودن دوتا شی استفاده میشود و با برابری متفاوت است ،مثالً دوتا هزارتومانی برابرند ولی یکسان نیستند.
x = 5
y = 5
z = 7
print(x is y) # -> True
print(x is not z) # -> True
* لیستها با مقادیر یکسان در خانههای متفاوتی از حافظه ذخیره میشوند ،پس یکی نیستند.
]x = [1, 2, 4
]y = [1, 2, 4
print(x is y) # -> False
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :14عملگرهای بیتی
2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0
0 + 64 + 0 + 0 + 8 + 0 + 0 + 1 = 73
* در پایتون میتوانیم عدد را بهصورت باینری بنویسیم ،به اینصورت که قبل از آن باید 0bگذاشت.
x = 0b000111
* برای اینکه مشخص کنیم باینری یک عدد چیست از تابع binاستفاده میکنیم.
))print(bin(5 # -> 0b101
* عملگر & ( :)andاگر هردو بیت یک باشند ،یک بیت تعیین میکند.
* عملگر ~ ( :)Notهمهی بیتها را برعکس میکند و مشخص میکند عدد بهدست آمده منفی چه عددی است.
نمایش مقدار عالمت :اولین عدد از چپ را بهعنوان عالمت در نظر میگیرد ( 1منفی است).
روش متمم یک :همهی صفرها به یک و همهی یکها به صفر تبدیل میشوند.
روش متمم دو :همهی اعداد را برعکس میکند ولی از سمت راست تا اولین 1نباید تغییر داد و بقیه را برعکس کرد ،منفی عدد بهدست
آمده پاسخ است.
print(~9) -> -10
# 9 >- 00001001
> -برعکس # 11110110
-> 00001010 -> 10 -> -10روش متمم دو #
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :15عملگر والروس
* این عملگر همزمان مقدار دهی میکند و در شرطها ،لیست و حلقهها کاربرد دارد.
print(x := 5) # -> 5
)print(x = 5
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
)) -> (*, /, %مثبت و منفی( () -> f() -> [index:index] -> [] -> ** -> ~ -> + -
) -> (<< , >>) -> & -> ^ -> | -> (in, not in, is, is not, <,جمع و تفریق( -> + -
<=, >, >=, ==, !=) -> not -> and -> or -> lambda
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* عبارت ( :)expressionحداقل یک مقدار برای تولید میکند و باید ارزیابی شود و یک نتیجه میدهد ،معموال چیزی تولید میکند
(شناسه ،لیترال (مقداری که به متغیر میدهیم) ،عملگرهای حسابی و .)...
x + 7 * 9
* دستور ( :)statementاز عبارتها و کلمات کلیدی تشکیل میشود و یک وظیفهی خاص را انجام میدهد و نیاز نیست ارزیابی شوند و
میتوانند چیزی تولید نکنند ،دو نوع دستور ساده و مرکب داریم.
* دستورات مرکب معموالً با یک کلمهی کلیدی شروع میشوند و با دو نقطه ( ):تمام میشوند و در ادامه بدنه نوشته میشود و طبق قواعد
فرورفتگی بدنه باید جلوتر باشد.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
کالس ( )classدر شی گرایی :برنامهی ما از یک سری واحدها تشکیل میشود به نام کالس که هرکدام یک از این کالسها تعدادی متد
دارد که وظیفهی خاصی انجام می دهند.
وراثت در شی گرایی :ایجاد یک کالس جدید با ویژگیهای کالس قبلی و دارا بودن قابلیتهای جدید را وراثت در شی گرایی گویند.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :20تکالیف مبحث مبانی و دستور نحو
.1دو متغیر xو yرا تعریف کنید و به آنها مقادیری اختصاص دهید .سپس ،مقادیر xو yرا بدون استفاده از متغیر سوم عوض
کنید.
.2برنامهای بنویسید تا مساحت یک مستطیل را با استفاده از متغیرها محاسبه کند .طول و عرض را در متغیرها ذخیره کنید.
سپس مساحت را محاسبه و چاپ کنید.
.3برنامهای ایجاد کنید که دما را از سانتیگراد به فارنهایت تبدیل کند .دما را بر حسب سانتیگراد در یک متغیر ذخیره کنید،
تبدیل را انجام دهید و نتیجه را چاپ کنیدو
.4مساحت و محیط دایره را محاسبه کنید .شعاع را در یک متغیر ذخیره کنید و سپس مساحت و محیط را محاسبه و چاپ کنید.
.5برنامهای بسازید که مجموع ،تفاوت ،حاصلضرب و توان دو عدد را محاسبه کند .دو متغیر xو yرا تعریف کنید ،آنها را در
متغیرها ذخیره کنید ،محاسبات را انجام دهید و نتایج را چاپ کنید.
.6برنامهای بسازید که میانگین سه عدد را محاسبه کند .سه متغیر y ،xو zرا تعریف کنید ،آنها را متغیرها ذخیره کنید،
میانگین را محاسبه کنید و نتیجه را چاپ کنید.
.7یک برنامه پایتون بنویسید تا مساحت یک مثلث را با توجه به قاعده و ارتفاع آن محاسبه کند .قاعده و ارتفاع را در دو متغیر
ذخیره کنید ،مساحت را محاسبه کنید و نتیجه را چاپ کنید.
.8یک متغیر ایجاد کنید و سن خود را در آن بنویسید .سالی که در آن 100ساله خواهید شد را محاسبه کنید و نتیجه را چاپ
کنید.
.9نام متغیرها را در قطعه کد داده شده را مطابق با قراردادهای نامگذاری pep 8تغییر دهید:
num1 = 42
Num2 = 13
ReSuLt = num1 Num2
)print(ReSuLt
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* اعداد در پایتون سه نوع اعداد صحیح ( ،)integerاعداد اعشاری ( )floatو اعداد مختلط ( )complex No.هستند.
>'print(type(5)) # -> <class 'int
>'print(type(5.1)) # -> <class 'float
>'print(type(3 + 2j)) # -> <class 'complex
* اگر تابع داخل کالس باشد به آن متد میگویند و معموالً متد بهصورت زیر نمایش داده میشود.
)(x.method
* نوع داده دیکشنری ( )dictionaryهمانند دیکشنری عمل میکند و معنی و مفهوم را میرساند.
}x = {'Ali': 'ugly', 'x': 5
>'print(type(x)) # -> <class 'dict
* توالیها عبارتند از رشته ( ،)stringلیست ( )listو تاپل ( ،)tupleکه در توالیها میتوانیم بین عناصر بچرخیم به این معنی که
میتوانیم به عنوان مثال به عنصر بعدی و یا عناصر اول ،دوم و ....دست یابیم.
's = 'Reza
]lst = [1, 2, 3, 4
)t = (1, 2, 3, 4
>'print(type(s)) # -> <class 'str
>'print(type(lst)) # -> <class 'list
>'print(type(t)) # -> <class 'tuple
* در پایتون شمارش از صفر شروع میشود.
's = 'Reza Dolati
# 012345678910
print(s[2: 6]) # -> za D
* نوع داده Noneزمانی استفاده میشود که نمیدانیم چه نوع مقداری به متغیر بدهیم و همچنین زمانی که در توابع نمیخواهیم چیزی
برگردانده شود از Noneاستفاده میکنیم.
x = None
))print(type(x >'# -> <class 'NoneType
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2اعداد در پایتون
* اعداد در پایتون سه نوع اعداد صحیح ( ،)integerاعداد اعشاری ( )floatو اعداد مختلط ( )complex No.هستند.
>'print(type(5)) # -> <class 'int
>'print(type(5.1)) # -> <class 'float
>'print(type(3 + 2j)) # -> <class 'complex
* اعداد مبنای مختلفی دارند و اعدادی که در زندگی روزمره استفاده میکنیم بر مبنای 10هستند.
* برای اینکه بتوانیم عدد را بر مبنای ( 2باینری) بنویسیم ،باید ابتدای عدد از 0bاستفاده کنیم.
x = 0b1011
print(x) # -> 11
* برای اینکه بتوانیم عدد را بر مبنای 8بنویسیم ،باید ابتدای عدد از 0oاستفاده کنیم.
x = 0o7235
print(x) # -> 3741
* برای اینکه بتوانیم عدد را بر مبنای 16بنویسیم ،باید ابتدای عدد از 0xاستفاده کنیم.
x = 0xf6e2a
print(x) # -> 1011242
* اگر رشته فقط از عدد تشکیل شده باشد میتوان آن را به عدد صحیح تبدیل کرد.
'x = '234
))print(int(x # -> 234
* در حافظهی کامپیوتر اعداد بهصورت باینری ذخیره میشوند و ممگن است گاهی در محاسبات اعشاری دقت کافی حاصل نشود.
)print(0.6 - 0.4 # -> 0.19999999999999996
* برای حل این مشکل میتوانیم از Decimalکه آن را باید از ماژول decimalوارد کنیم ،استفاده کنیم.
from decimal import Decimal
* عدد اعشاری که بسیار بزرگ باشد به نحوهی دیگری نمایش داده میشود.
)print(1e+7 # -> 10000000.0
* # 1e+7 = 1 10 ** 7
)print(1e-7 # -> 0.0000001
* # 1e-7 = 1 10 ** -7
)'f = float('inf
print(f) # -> inf
* برای نمایش بخش حقیقی اعداد complexاز realو برای نمایش بخش مجهول از imagاستفاده میکنیم.
c = 1 + 3j
)print(c.real # -> 1.0
)print(c.imag # -> 3.0
p = 2 - 3j
))(print(p.conjugate )# -> (2+3j
* برای گرد کردن اعداد اعشاری از تابع roundاستفاده میکنیم ،در ورودی اول عدد را ارسال میکنیم و در ورودی دوم مشخص میکنیم تا
چند رقم اعشار باید رند شود.
c = 3.2564543565
))print(round(c, 2 # -> 3.26
* برای به دست آوردن قدر مطلق یک عدد از تابع absاستفاده میکنیم.
print(abs(3.25)) # -> 3.25
print(abs(-4.32)) # -> 4.32
* برای به توان رساندن از تابع powاستفاده میکنیم ،در ورودی اول عدد را ارسال میکنیم و در ورودی دوم توان را مینویسیم.
))print(pow(3, 2 # -> 9
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس : 3حل مثال برای مبحث اعداد
.1برنامهای بنویسید که وزن را بر اساس کیلوگرم دریافت کند و بر اساس گرم نمایش دهد.
* در دستور printبا sepمیتوانیم مشخص کنیم چه چیزی در میان عناصر قرار گیرد.
)'print(25, 'Ali', 'car', sep='/ # -> 25/Ali/car
.3طراحی یک ماشین حساب ساده که جمع ،تفریق ،ضرب و تقسیم را انجام میدهد.
))' x = int(input('x:
))' y = int(input('y:
print(x, '+', y, '=', x + )y
print(x, '-', y, '=', x - )y
print(x, '*', y, '=', x * )y
print(x, '/', y, '=', x / )y
.۴یک عدد را از کاربر گرفته و ارقامش را جدا کنیم و چاپ کنیم (به فرض اینکه میدانیم عدد چند رقمی است).
* هر عددی را بهصورت تقسیم بدون اعشار به 10تقسیم کنیم،رقم آخرش حذف میشود.
)print(45903 // 10 # -> 4590
))' x = int(input('x:
y = x % 10
)print(y
x = x // 10
y = x % 10
)print(y
x = x // 10
y = x % 10
)print(y
.1برنامهای بنویسید که شعاع دایره را از کاربر گرفته و محیط و مساحت دایره را حساب کند.
p = 3.14
))' r = float(input('r:
))print(environment:', round(2 * p * r, 3
))print(area:', round(p * (r ** 2), 2
.2برنامهای بنویسید که یک عدد از کاربر گرفته و مربع (توان دوم) و مکعب (توان سوم) آن را چاپ کند.
))' x = int(input('x:
)print('x ^ 2 =', x ** 2
)print('x ^ 3 =', x ** 3
.3برنامه ای بنویسید که دو عدد از کاربر گرفته ،اولی را به توان دومی برساند و نتیجه را چاپ کند.
))' x = int(input('x:
))' y = int(input('y:
)print('x ^ y =', x ** y
))' x = int(input('x:
))' y = int(input('y:
))' z = int(input('z:
ave = (x + y + z) / 3
))print('ave:', round(ave, 2
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۶رشتهها در پایتون بخش (اول)
* برای بررسی اینکه مقدار متغیر از نوع خاصی هست یا خیر از تابع isinstanceاستفاده میکنیم ،ورودی اول مقدار و ورودی دوم نوع
میباشد.
x = 2
))print(isinstance(x, int # -> True
))print(isinstance(x, str # -> False
* رشته میتواند حروف انگلیسی ،حروف و نمادهای سایر زبانها ،عدد ،کاراکترهای خاص مانند & ،#و ...باشد.
* اعداد هم بهتر است بهصورت رشته دخیره شوند مگر در مواردی که نیاز به انجام محاسبات است.
* اگر یک رشته را با کتیشن آغاز کنیم باید با کتیشن ببندیم و همچنین اگر با دابل کتیشن آغاز کنیم باید با دابل کتیشن ببندیم.
's = 'reza
"z = "ali
* زمانی که رشته را داخل کتیشن یا دابل کتیشن قرار دادیم ،میتوانیم داخل آن نیز از کتیشن یا دابل کتیشن استفاده کنیم اما باید دقت
کنیم که اگر رشته داخل کتیشن باشد باید داخل رشته از دابل کتیشن استفاده کنیم و اگر رشته داخل دابل کتیشن باشد ،باید داخل رشته از
کتیشن استفاده کنیم.
's = 'ali, "reza", ahmad
"z = "ali, 'reza', ahmad
* اگر بخواهیم داخل رشته از کتیشن یا دابل کتیشن همانند کتیشن یا دابل کتیشنی که رشته در آن قرار دارد استفاده کنیم باید قبل از آن از
بک اسلش (\) استفاده کنیم ،بک اسلش (\) وظیفهی لغو یک دستور را دارد.
"s = "ali, \"reza\", ahmad
'z = 'ali, \'reza\', ahmad
* برای لغو تاثیر بک اسلش (\) از یک بک اسلش دیگر قبلش استفاده میکنیم.
)'print('c:\Downloads\\new # -> c:\Downloads\new
* در صورت طوالنی شدن رشته میتوانیم رشته را ببندیم ،یک بک اسلش بگذاریم و ادامه رشته را در خط بعد بنویسیم.
\ ' print(r'ali
'reza') # -> ali reza
* بهتر است بک اسلش را نگذاریم.
' print(r'ali
)''reza # -> ali reza
* استفاده از سه کتیشن ( ’’‘ ) بهجای یک کیتشن ،رشته را همانگونه که مینویسیم نمایش میدهد.
print('''ali
)'''reza
* اگر هردو رشته باشند میتوان بدون کاما ( ) ,و یا جمع آنها را کنار هم قرار داد.
)'print('ali''reza # -> alireza
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۷رشتهها در پایتون بخش (دوم)
* رشتهها چون توالیاند به راحتی میتوان شماره گذاری کرد و عناصر مختلف آن را نمایش داد.
* در slicingاگر ابتدا خالی باشد یعنی از اول و اگر انتها خالی باشد یعنی تا آخر و اگر کامال خالی باشد یعنی کل رشته را مشخص کند.
's = 'ali reza
# 01234567
# ...-2-1
)]print(s[2: 3 # -> i
)]print(s[2: # -> i reza
)]print(s[: 3 # -> ali
)]print(s[: # -> ali reza
)]print(s[: 2] + s[2: # -> ali reza
* رشتهها برخالف لیستها قابل تغییر نیستند و نمیتوانیم یک کاراکتر را عوض کنیم.
's = 'ali reza
's[2] = 'q
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۸متدهای مهم رشته
* تابع lenتعداد کاراکترهای یک رشته را مشخص میکند ( فاصله نیز کاراکتر محسوب میشود.
'مs = 'ali #6
))print(len(s # -> 7
* از متد endswithبرای بررسی اینکه یک رشته با کاراکتر یا رشتهی خاصی به پایان رسیده است یا خیر ،استفاده میکنیم.
's = 'ali ahmadi
print(s.endswith('i')) # -> True
print(s.endswith('adi')) # -> True
print(s.endswith('h')) # -> False
* از متد starstwithبرای بررسی اینکه یک رشته با کاراکتر یا رشتهی خاصی آغاز شده است یا خیر ،استفاده میکنیم.
's = 'ali ahmadi
print(s.startswith('a')) # -> True
print(s.startswith('ali ')) # -> True
print(s.startswith('d')) # -> False
* از متد findبرای پیدا کردن موقعیت یک کاراکتر در رشته استفاده میکنیم ،اگر چند عدد از آن کاراکتر در رشته باشد این متد موقعیت
اولین کاراکتر را از سمت چپ مشخص میکند.
's = 'ali mohammadi
print(s.find('a')) # -> 0
print(s.find('m')) # -> 4
* از متد rfindبرای پیدا کردن موقعیت یک کاراکتر در رشته از سمت راست استفاده میکنیم.
's = 'ali mohammadi
))'print(s.rfind('a # -> 10
))'print(s.rfind('m # -> 9
* از متد isalnumبرای بررسی اینکه یک رشته تماماً از عدد و حرف تشکیل شده باشد استفاده میکنیم.
's = 'alimohammadi
'n = 'a li
'435liبهارm = 'a
'c = '$kb@v
))(print(s.isalnum # >- True
))(print(n.isalnum # >- False
))(print(m.isalnum # >- True
))(print(c.isalnum # >- False
* از متدهای isnumericو isdigitرای بررسی اینکه یک رشته فقط از عدد تشکیل شده باشد استفاده میکنیم.
'x = '3535467
y = '45 '445
'z = '35h
))(print(x.isnumeric # -> True
print(x.isdigit()) # -> True
print(y.isdigit()) # -> False
print(z.isdigit()) # -> False
* از متد joinبرای قرار دادن یک رشته در بین عناصر یک لیست و یا تاپل در صورتیکه رشته باشند ،استفاده میکنیم.
's = '#
]'lst = ['A', '5', 'me
print(s.join(lst)) # -> A#5#me
* از متد splitبرای جداسازی عناصر یک رشته براساس یک رشتهی خاص و قرار دادن آن در یک لیست استفاده میکنیم.
's = 'reza-ali-435
))'print(s.split('- ]'# -> ['reza', 'ali', '435
* از متد stripبرای حذف یک کاراکتر از ابتدا و انتهای رشته استفاده میکنیم ،مقدار پیشفرض آن فاصله است.
' = s ali reza '
'**x = '**ali reza
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۹کاراکترهای ویژه و آشنایی با یونیکد
* هر کاراکتر با یک کد خاص در حافظه ذخیر میشود ،که این کد میتواند اسکی ( )ASCIIو یا یونیکد ( )unicodeباشد.
* اگر یونیکد بر مبنای ( 10دسیمال) باشد ،با قرار دادن \uمیتوانیم مشخص کنیم که به چه کاراکتری اختصاص دارد.
)'print('\u0489 ҉ ># -
)'print('\u2DBB ⶻ ># -
* اگر یونیکد بر مبنای 8باشد ،با قرار دادن \0میتوانیم مشخص کنیم که به چه کاراکتری اختصاص دارد.
)'print('\052 * ># -
* اگر یونیکد بر مبنای 16باشد ،با قرار دادن \xمیتوانیم مشخص کنیم که به چه کاراکتری اختصاص دارد.
)'print('\x2a * ># -
* از یونیکد \nمیتوان برای رفتن به خط بعد استفاده کرد ،از یونیکد سایر موارد نیز میتوان استفاده کرد ،اما بهتر است از دستورات
اختصاصی آنها استفاده شود.
)'print('reza\u000Aali
* اگر از \rدر رشته استفاده کنیم ،همهی کاراکترهای قبل از خودش را پاک میکند.
)'print('ali\rreza # -> reza
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :1۰فرمتدهی رشته با روش سنتی (روش اول)
* این روش نسبت به روشهای دیگر قدیمیتر است ،در آن از %استفاده میکنیم و مقادیر را باید به ترتیب ارسال کنیم.
x = 2
y = 3.6
))print('x is: %i\ny is: %i\nz is: %i' % (x, y, 5
* در این روش پس از %از این موارد استفاده میکنیم type ( .اجباری میباشد و بقیه موارد اختیاری اند).
% [(key)] [flag] [W] [.p] type
* برای اعداد صحیح از iو یا dاستفاده میکنیم و قسمت اعشار حذف می شود.
print('%i' % 2) # -> 2
print('%i' % 4.554) # -> 4
print('%d' % 6.34) # -> 6
* اگر از cاستفاده کنیم ،کاراکتر یک یونیکد را نمایش میدهد و اگر یونیکد نباشد خود کاراکتر را نمایش میدهد.
)print('%c' % 674 # -> ʢ
)'print('%c' % 'y # -> y
* از xبرای نمایش مبنای 16یک عدد استفاده میکنیم ،اگر از Xاستفاده کنیم ،نتیجه نیز با حرف بزرگ نمایشداده میشود.
)print('%x' % 436547567 # -> 1a052fef
)print('%X' % 436547567 # -> 1A052FEF
* از eبرای نمایش نماد علمی یک عدد استفاده میکنیم ،اگر از Eاستفاده کنیم ،نتیجه نیز با حرف بزرگ نمایش داده میشود.
)print('%e' % 436547567 # -> 4.365476e+08
)print('%E' % 436547567 # -> 4.365476E+08
* از fبرای نمایش اعداد اعشار استفاده میکنیم ،تا 6رقم اعشار نمایش داده میشود.
)print('%f' % 2.6 # -> 2.600000
* از rبرای نمایش رشته بهکار میرود و برخالف sرشته را همانگونه که هست و با کتیشن نمایش میدهد.
)'print('%r' % 'reza '# -> 'reza
* از ] [.pبرای کنترل تعداد ارقام اعشار استفاده می کنیم ،به اینصورت که پس از .مشخص میکنیم تا چند رقم اعشار را نمایش دهد.
)print('%.2f' % 3.54355653545 # -> 3.54
* از ] [wبرای مشخص کردن طول میدان استفاده میکنیم ،اگر طول میدان را بزرگتر از تعداد کاراکترها مشخص کنیم ،به جای طول میدان
اضافی ،قبل از کاراکترها فاصله گذاشته میشود.
)print('%9.2f' % 3.5435 ># - 3.54
* از 0در ] [flagبرای پر کردن فضاهای خالی با 0استفاده میکنیم ،نمیتوانیم 0و – را در کنارهم به کار ببریم.
)print('%09.2f' % 3.5435 # -> 000003.54
* اگر به جای موارد اختیاری از ستاره ( * ) استفاده کنیم ،میتوانیم آن موارد را قبل از متغیر و به ترتیب تعیین کنیم.
x = 3.8487320342358
))print('%8.*f' % (5, x ># - 3.84873
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :11فرمتدهی رشته با متد ( formatروش دوم)
* نسبت به روش قبلی جدیدتر و دارای قابلیتهای بیشتری است ،در آن از }{ استفاده میکنیم و سپس از متد formatاستفاده میکنیم و
مقادیر را به ترتیب به آن ارسال می کنیم.
)'{} {}'.format(values
x = 5
y = 6.4354354
))print('x: {}\ny: {}'.format(x, y
* اگر بخواهیم مقادیر به تریب نمایش داده نشوند،میتوانیم از مکان مقادیر در }{ استفاده کنیم.
x = 5
y = 6.4354354
))print('x: {1}\ny: {2}\nz: {0}'.format(x, y, 4
# 0 1 2
* در توالیها (لیست ،رشته و تاپل) از یک ستاره ( * ) قبل از توالی در هگام فرمت دهی استفاده میکنیم.
}{ print('x: - ))'y: {}\n'.format(*'re
}{ print('x: - ))]y: {}\n'.format(*[1, 2
}{ print('x: - )))y: {}\n'.format(*(4, 8
ساختار کلی فرمت دهی با متد ( :formatاین مبحث با روش سوم مشترک است).
'}]'{[field-name][!conversion][:format-spec
* در ] [!conversionپس از ! نوع متغیر را مشخص میکنیم ،از sبرای نمایش رشته r ،برای نمایش رشته با کتیشن و aبرای
نمایش یونیکد کاراکتر استفاده میکنیم.
print('x: {0!s}'.format('reza')) # -> x: reza
'print('x: {0!r}'.format('reza')) # -> x: 'reza
'print('x: {0!a}'.format('ᓬ')) # -> x: '\u14ec
'}]'{:[[fill]align][sign][#][0][width][grouping-option][.precision][type
* از xبرای نمایش مبنای 16یک عدد استفاده میکنیم ،اگر از Xاستفاده کنیم ،نتیجه نیز با حرف بزرگ نمایشداده میشود.
))print('{:x}'.format(234 # -> ea
))print('{:X}'.format(234 # -> EA
* از eبرای نمایش نماد علمی یک عدد استفاده میکنیم ،اگر از Eاستفاده کنیم ،نتیجه نیز با حرف بزرگ نمایش داده میشود.
))print('{:e}'.format(234 # -> 2.340000e+02
))print('{:E}'.format(234 # -> 2.340000E+02
* از fبرای نمایش اعداد اعشار استفاده میکنیم ،تا 6رقم اعشار نمایش داده میشود.
))print('{:f}'.format(2.1 # -> 2.100000
* در ] [widthطول میدان را مشخص میکنیم ،اگر طول میدان را بزرگتر از تعداد کاراکترها مشخص کنیم ،به جای طول میدان اضافی،
قبل از کاراکترها فاصله گذاشته میشود.
))print('{:15,.2f}'.format(4543 ># - 4,543.00
* در ] [#اگر قبل از bاز #استفاده کنیم ،قبل از عدد باینری 0bنمایش داده میشود.
))print('{:#b}'.format(43 # -> 0b101011
* در ] [#اگر قبل از oاز #استفاده کنیم ،قبل از مبنای 8عدد 0o ،نمایش داده میشود.
))print('{:#o}'.format(43 # -> 0o53
* در ] [#اگر قبل از xاز #استفاده کنیم ،قبل از مبنای 16عدد 0x ،نمایش داده میشود.
))print('{:#x}'.format(453 # -> 0x1c5
* در ] [signاگر از -استفاده کنیم ،اگر عدد منفی باشد عالمت آن را نمایش میدهد.
))print('{:-}'.format(43 # -> 43
))print('{:-}'.format(-43 # -> -43
* در ] [signاگر از فاصله استفاده کنیم ،اگر عدد مثبت باشد ،فاصله را نمایش میدهد و اگر عدد منفی باشد عالمت آن را نمایش میدهد.
))print('{: }'.format(43 # -> 43
))print('{: }'.format(-43 # -> -43
* در ] [[fill]alignدر قسمت alignبا استفاده از < فضاهای خالی را در سمت راست و انتهای رشته قرار میدهیم.
* در ] [[fill]alignدر قسمت alignبا استفاده از < فضاهای خالی را در سمت چپ و ابتدای رشته قرار میدهیم.
* در ] [[fill]alignدر قسمت alignبا استفاده از ^ رشته را در میان فضاهای خالی قرار میدهیم.
))print('{:<15}'.format(43 # -> 43
))print('{:>15}'.format(43 ># - 43
))print('{:^15}'.format(43 ># - 43
* در ] [[fill]alignدر قسمت fillمشخص میکنیم که فضاهای خالی با چه چیزی پر شوند ،حتما باید مشخص کنیم که
فضاهای خالی در کجا قرار گیرند.
))print('{:+<15}'.format(43 # -> 43+++++++++++++
))print('{:+>15}'.format(43 # -> +++++++++++++43
))print('{:+^15}'.format(43 # -> ++++++43+++++++
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :12فرمتدهی رشته با متد ( f-stringروش سوم)
* این روش جدیدترین روش است و بهتر است از این روش استفاده کنیم.
* این روش همانند روش قبل است فقط بهجای استفاده از متد formatاز fیا Fقبل از رشته استفاده میکنیم.
x = 14
print(f'{43:+^15} ---- )'}{x ** 2:+ # -> ++++++43+++++++ ---- +196
print(F'{43:+^15} ---- )'}{x ** 2:+ # -> ++++++43+++++++ ---- +196
* اگر داخل رشته از }{ استفاده کنیم و بخواهیم }{ نمایش داده شود باید آن را داخل یک }{ دیگر قرار دهیم.
)'}print(f'{{x}} is {4 # -> {x} is 4
* اگر بخواهیم مقدار را در }{ نمایش دهد ،باید متغیر را داخل }}}{{{ قرار دهیم.
)'}}}print(f'{{x}} is {{{4 }# -> {x} is {4
def up_case(s):
)(return s.upper
* برای اینکه بتوانیم چند رشته را پشت سرهم بنویسیم و فرمت دهی کنیم میتوانیم آنها را در یک متغیر قرار دهیم.
'name = 'ali
'age = '23
( = msg
'f'name: {name}\n
'}f'age: {age
)
)print(msg
* برای استفاده از تاریخ از ماژول datetimeاستفاده میکنیم.
* برای مشخص کردن زمان کنونی از متدهای nowو todayماژول datetimeاستفاده میکنیم.
from datetime import datetime
* میتوانیم تاریخ را نیز فرمت دهی کنیم %Y ،نشان دهندهی سال %m ،نشان دهندهی ماه %d ،نشان دهندهی روز %H ،نشان دهندهی ساعت
در فرمت ۲۴ساعته %M ،نشان دهندهی دقیقه %S ،نشان دهندهی ثانیه میباشند.
import datetime
)(today = datetime.datetime.today
)'}print(f'{today:%Y/%m/%d-%H:%M:%S # -> 2023/07/24-18:38:26
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :13حل مثال برای مبحث رشته
.1فرض کنیم یک رشته داریم و یک جمله در آن ذخیره شده است ،برنامهای بنویسیم که یک کاراکتر از کاربر بگیرد و مشخص
کند آن رشته چند بار تکرار شده است.
.3برنامهای بنویسیم که دو رشته از کاربر گرفته و مشخص کند که رشتهی دوم در رشتهی اول هست یا خیر.
))'print(s.lstrip('0
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس 1۴و : 1۵تکالیف مبحث رشته و حل آنها
.1یک رشته را از کاربر بگیرید و سپس تعداد جملهها ،تعداد کلمهها ،تعداد کل کاراکترها ( مثال حروف ،فاصله ،نقطه ،ویرگول
و…) و تعداد حروف انگلیسی ( مثل c ،b ،aو )...را چاپ کنید.
.3یک شماره همراه را از کاربر بگیرید و بررسی کنید که آیا تمام ارقام آن عدد است یا خیر؟
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :1۶لیستها در پایتون (بخش اول)
* برای ایجاد لیست میتوانیم عناصر را داخل براکت ][ قرار دهیم آنها را کاما ( ) ,از هم جدا کینم.
]x = [1, 3, 5, 7, 9
* با استفاده از متد splitنیز میتوانیم عناصر یک رشته را براساس کاراکتری خاص جدا کنیم و در یک لیست قرار دهیم.
's = 'reza-ali-ahmad-b-v
]'print(s.split('-')) # -> ['reza', 'ali', 'ahmad', 'b', 'v
* لیستها نیز همانند رشتهها ایندکس و مکان مشخص دارند و میتوانیم از slicingاستفاده کنیم.
]'s = [1, 2, 4, 'Ali
# 0 1 2 3
* اشیا در پایتون یا تغییر پذیرند ( )mutableمانند لیستها ،یا تغییر ناپذیر ( )immutableمانند رشتهها ،اعداد و تاپل.
]s = [1, 5
s[0] = 14
]print(s) # -> [14, 5
* در لیستها میتوانیم از عملگرهای مقایسهای استفاده کنیم.
s = [1, ]5
x = [2, ]7
n = [1, ]5
print(s )== x ># - False
print(s )== n ># - True
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :1۷لیستها در پایتون (بخش دوم)
* در لیستها برخالف رشتهها و اعدد ،اگر در لیست دوم که آن را مساوی لیست اول قرار دادیم تغییر اعمال کنیم ،این تغییرات در لیست اول
نیز اعمال میشوند.
]s = [1, 5
z = s
z[0] = 0
]print(s) # -> [0, 5
* برای اینکه تغییرات اعمال نشوند میتوانیم از کپی لیست با مساوی قرار دادن لیست دوم با تمام عناصر لیست اول استفاده کنیم.
]s = [1, 5
]z = s[:
z[0] = 0
]print(s) # -> [1, 5
* برای دسترسی به عناصر لیست و یا رشته داخلی در هنگام slicingباید از یک براکت ][ دیگر نیز استفاده کنیم.
]]'x = [1, 5, ['ali', 'b
* اگر یک لیست داخل لیست دیگر باشد و با استفاده از متد copyلیست را کپی کنیم و کپی لیست را تغییر بدهیم ،تغییرات در لیست
داخلی نیز اعمال میشوند ،به این نوع کپی ،کپی سطحی میگوییم که در این حالت عناصر داخلی کپی نمی شوند بلکه ارجاع داده میشوند.
]]'x = [1, 5, ['ali', 'b
)(z = x.copy
'z[2][0] = 'reza
]]'print(x) # -> [1, 5, ['reza', 'b
* برای حل این مشکل میتوانیم از کپی عمیق با استفاده از متد deepcopyماژول copyاستفاده کنیم که در آن عناصر داخلی نیز کپی
میشوند.
from copy import deepcopy
* در هنگام تغییر عناصر لیست میتوانیم چند ایندکس را انتخاب کنیم و تغییر بدهیم.
]x = [1, 5, 6, 7, 8
]'x[2:5] = ['a', 'b
]'print(x) # -> [1, 5, 'a', 'b
* برای مشخص کردن تعداد عناصر لیست میتوانیم از تابع lenاستفاده کنیم.
]x = [1, 5, 6
))print(len(x # -> 3
* در پایتون میتوانیم از انتصاب چندگانه استفاده کنیم ،به اینصورت که متغیرها را به ترتیب بنویسیم و مقداردهی کنیم.
= a, b, c ][2, 3, 5
)print(a # -> 2
)print(b # -> 3
)print(c # -> 5
* در هنگام انتصاب چندگانه اگر تعداد مقادیر از متغیرها بیشتر بود ،با گذاشتن ستاره ( * ) قبل از متغیر ،آن متغیر مقادیر اضافی را میگیرد.
a, *b, c, = ][2, 3, 5, 1, 6, 9
)print(a # -> 2
)print(b # ]-> [3, 5, 1, 6
)print(c # -> 9
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :1۹چندتاییها (تاپل) در پایتون
* در تاپل میتوانیم هر نوع دادهای بنویسیم و بهتر است عناصر را داخل پرانتز () قرار دهیم و با کاما ( ) ,آنها را جدا کنیم.
)]x = (1, 2, 'reza', [5, 1
* در لیستها بهتر است از یک نوع داده استفاده کنیم و از تاپلها بهتر است زمانی استفاده کنیم که چند نوع داده داریم.
* تاپلها به دلیل تغییر ناپذیر بودن ،در مصرف حافظه بهینه ترند.
* برای تغییر دادن عناصر تاپل میتوانیم ابتدا آن را به لیست تبدیل کنیم و بعد از اعمال تغییرات با استفاده از tupleدوباره لیست را به
تاپل تبدیل کنیم.
)x = (1, 2, 3
)x = list(x
x[2] = 6
)x = tuple(x
)print(x) # -> (1, 2, 6
* هنگامی که میخواهیم فقط یک عدد را در تاپل قرار دهیم باید بعد از آن از کاما ( ) ,استفاده کنیم چون در غیر اینصورت نوع آن int
میباشد.
x = 1,
))print(type(x >'# -> <class 'tuple
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2۰دیکشنریها در پایتون (قسمت اول)
* برای دیکشنری از آکوالد }{ استفاده میکنیم ،دیکشنری از دو قسمت کلید و مقدار تشکیل شده است ،ابتدا کلید قرار دارد و سپس
مقدارش در جلوی آن و پس از :قرار دارد.
ساختار دیکشنری:
* برای بهدست آوردن عناصر دیکشنری نمیتوانیم از ایندکس آنها استفاده کنیم و از کلیدها استفاده میکنیم.
}d = {'a': 3, 'b': 7, 'c': 3
print(d['b']) # -> 7
* کلیدها میتوانند هر نوع داهی تغییر ناپذیر باشند ،تاپل اگر عضو تغییر پذیر مانند لیست داشته باشد نمیتوان از آن بهعنوان کلید دیکشنری
استفاده کرد.
* در دیکشنریها برخالف توالیها (لیست ،تاپل و رشته) ترتیب مهم نیست چون از ایندکس استفاده نمیکنیم ،بلکه از کلید استفاده میکنیم.
* با استفاده از متد getمیتوانیم مقدار یک کلید را بهدست آوریم و در صورتیکه کلید وجود نداشته باشد نتیجه Noneاست.
}d = {'a': 3, 'b': 7
print(d.get('a')) # -> 3
print(d.get('w')) # -> None
* با استفاده از متد keysکلیدهای یک دیکشنری را بهدست میآوریم.
}d = {'a': 3, 'b': 7
)]'print(d.keys()) # -> dict_keys(['a', 'b
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :21دیکشنریها در پایتون (قسمت دوم)
* کلیدهای دیکشنری تغییر نمیکنند اما میتوانیم ابتدا مقدار را بدر یک متغیر قرار دهیم ،سپس کلید را حذف کنیم و درنهایت یک کلید
جدید ایجاد کنیم و مقدار ذخیره شده از قبل را به آن بدهیم.
}d = {'a': 3, 'b': 7
]'x = d['b
]'del d['b
d['x'] = x
}print(d) # -> {'a': 3, 'x': 7
* از تابع sortedمیتوانیم برای مرتب سازی استفاده کنیم ،اگر عناصر عدد باشند از کوچک به بزرگ و اگر حروف باشند بر اساس حروف
الفبا مرتب میشوند.
]a = [15, 1, 7
]'b = ['c', 'a', 'm
]print(sorted(a)) # -> [1, 7, 15
]'print(sorted(b)) # -> ['a', 'c', 'm
* اگر بخواهیم تابع sortedمرتب سازی را برعکس انجام دهد ،باید مقدار reverseرا Trueقرار دهیم.
]a = [15, 1, 7
]'b = ['c', 'a', 'm
))print(sorted(a, reverse=True ]# -> [15, 7, 1
))print(sorted(b, reverse=True ]'# -> ['m', 'c', 'a
* با استفاده از تابع dictمیتوانیم دیکشنری ایجاد کنیم ،به اینصورت که هر مقدار و کلید داخل یک تاپل باشند و همه عناصر داخل لیست
باشند.
)])d = dict([('a', 5), ('b', 10
}print(d) # -> {'a': 5, 'b': 10
* اگر کلیدها رشته باشند میتوانیم به جای استفاده از لیست و تاپل به کلیدها مقدار را بدهیم.
)d = dict(a=5, b=10
}print(d) # -> {'a': 5, 'b': 10
* با استفاده از حلقه ( forتوضیحات در فصل )۵نیز میتوانیم دیکشنری ایجاد کنیم.
})d = {x: x ** 2 for x in range(5
}print(d) # -> {0: 0, 1: 1, 2: 4, 3: 9, 4: 16
)print(d }}# -> {'first': {'name': 'reza', 'age': 24}, 'second': {'name': 'ali', 'age': 27
* از دیکشنری نمیتوانیم به عنوان کلید استفاده کنیم چون تغییر پذیر است ،اما میتوانیم به عنوان مقدار استفاده کنیم.
* در دیکشنری برخالف لیست ،تاپل و رشته نمیتوانیم از تکرار * و جمع +استفاده کنیم.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :22مجموعهها در پایتون (قسمت دوم)
* مجموعهها در پایتون با آکوالد (}{) مشخص میشوند و عناصر با کاما ( ) ,از یکدیگر جدا میشوند.
}s = {1, 5, 6, 9
* ترتیب در مجموعه اهمیت ندارد و نمیتوانیم با ایندکس به عناصر مجموعه دست یابیم.
* مجموعهها نمیتوانند به عنوان کلید دیکشنری قرار بگیرند ،چون قابل تغییرند.
* مجموعهها هر نوع داده تغییر ناپذیر مانند عدد ،رشته ،تاپل را در خود ذخیره میکنند.
* از تابع lenبرای شمردن تعداد عناصر مجموعه استفاده میکنیم ،عناصر تکراری شمرده نمیشوند.
}s = {1, 1, 1, 1, 2, 3
print(len(s)) # -> 3
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :23مجموعهها در پایتون (قسمت دوم)
* تفاضل دو مجموعه عبارت است از همهی مواردی که در مجموعه اول هستند اما در مجموعه دوم نیستند ،برای تفاضل از تفریق ( ) -
استفاده میکنیم ،از متد differenceنیز میتوانیم برای بهدست آوردن تفاضل دو مجموعه استفاده کنیم.
}p = {3, 9, 15, 12, 6, 18
}q = {4, 16, 10, 2, 8, 14, 12, 6, 18
* اجتماع دو مجموعه عبارت است از همهی مواردی که در دو مجموعه وجود دارد ،برای اجتماع دو مجموعه از پایپ ( | ) استفاده میکنیم ،از
متد unionنیز میتوانیم برای بهدست آوردن اجتماع دو مجموعه استفاده کنیم.
}p = {3, 9, 15, 12, 6, 18
}q = {4, 16, 10, 2, 8, 14, 12, 6, 18
* اشتراک دو مجموعه عبارت است از همهی مواردی که در دو مجموعه مشترک است ،برای اشتراک دو مجموعه از & استفاده میکنیم ،از متد
intersectionنیز میتوانیم برای بهدست آوردن اشتراک دو مجموعه استفاده کنیم.
}p = {3, 9, 15, 12, 6, 18
}q = {4, 16, 10, 2, 8, 14, 12, 6, 18
* تفاضل مقارن دو مجموعه به معنی همهی موارد دو مجموعه به جز اشتراک آنها میباشد ،برای تفاضل مقارن دو مجموعه از ^ استفاده
میکنیم ،از متد symmetric_differenceنیز میتوانیم برای بهدست آوردن تفاضل مقارن دو مجموعه استفاده کنیم.
}p = {3, 9, 15, 12, 6, 18
}q = {4, 16, 10, 2, 8, 14, 12, 6, 18
))print((q | p) - (q & p }# -> {2, 3, 4, 8, 9, 10, 14, 15, 16
))print((q - p) | (p - q }# -> {2, 3, 4, 8, 9, 10, 14, 15, 16
* یک مجموعه زمانی زیرمجموعهی یک مجموعه است که همهی عناصر آن در مجموعهی دیگر باشد.
* برای بررسی زیرمجموعه بودن یک مجموعه میتوانیم از > < ،و متدهای issubsetو issupersetاستفاده کنیم.
}a = {10, 30, 60, 40, 50, 20
}b = {10, 30, 60
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2۴حل مثال برای مبحث دیکشنری ،لیست و مجموعه
* استفاد از لیست یا تاپل ندارد ،اما بهتر است در مواردی که نیاز به تغییر است ،از لیست استفاده شود.
.1با استفاده از لیستها ،نام و نمرات سه درس یک دانشجو را دریافت کنیم و میانگین نمرات آن را نشان دهیم.
][ = marks
)' name = input('name:
))' physics = int(input('physics mark:
)marks.append(physics
))' biology = int(input('biology mark:
)marks.append(biology
))' math = int(input('math mark:
)marks.append(math
ave = (marks[0] + marks[1] + marks[2]) / 3
)'}print(f'marks: {marks}\naverage: {ave:.2f
.2یک شماره تلفن یا کدملی را بهصورت رشته از کاربر بگیریم و همهی اعداد آن را به صورت یک رشته در یک لیست ذخیره
کنیم.
.3دو لیست داریم ،به جای آخرین عنصر لیست اول ،لیست دوم را بگذاریم.
.۴یک برنامه بنویسیم که یک رشته از کاربر بگیرد و تعدا کاراکترها را به جز کاراکترهای تکراری بشمارد.
}{ = marks
)' name1 = input('name:
))' mark1 = float(input('mark:
marks[name1] = mark1
)' name2 = input('name:
))' mark2 = float(input('mark:
marks[name2] = mark2
)print(marks
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس 2۵و : 2۶تکالیف مبحث دیکشنری و مجموعه و حل آنها
.1فرض کنید شما قرار است یک دیکشنری واقعی بنویسید .با استفاده از نوع داده دیکشنری آن را پیاده سازی کنید .دقت کنید
که کلمه اصلی باید کلید دیکشنری باشد و معانی آن میتوانند بیشتر از یک کلمه باشند .معانی را از کاربر بپرسید.
}{ = dictionary
)' key = input('word:
)'meaning = input('meaning: '). split(',
dictionary[key] = meaning
)print(dictionary
.2حاال پس از انجام سوال قبلی ،بخشی را به برنامه اضافه کنید تا یک کلمه را از کاربر گرفته و معانی آن را از دیکشنری خوانده و
نمایش دهد.
.3دو لیست مختلف از شماره تلفن های افراد مختلف داریم .ممکن است بعضی از شماره ها در لیست ها تکراری باشد (مثال
۰۹3۹در هر دو لیست وجود داشته باشد) .لیست جدیدی ایجاد کنید که دو لیست قبلی را ترکیب میکند ولی تکراری ها در آن
وجود ندارند(.از نوع داده مجموعه کمک بگیرید)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2۷بولین و NoneTypeدر پایتون
* بولین به مقادیر Trueو Falseگفته میشود که در واقع عدد هستند 1 ،نمایانگر Trueو 0نمایانگر Falseمیباشد.
t = True
f = False
print(t) # -> True
>'print(type(t)) # -> <class 'bool
print(f) # -> False
>'print(type(f)) # -> <class 'bool
print(int(t)) # -> 1
print(int(f)) # -> 0
print(t + 1) # -> 2
print(f + 1) # -> 1
print(True == 1) # -> True
print(False == 0) # -> True
* در شرطها False ،0است ،اما هر عددی به غیر از True ،0درنظر گرفته میشود.
if 0:
)print(0
if 1:
)print(1
if -54.23:
)print(-54.23
* در شرطها تمام اشیای خالی ()( False ،)'', (), {}, [], setدرنظر گرفته میشوند و باقی موارد Trueدرنظر گرفته
میشوند.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2۸عملگرهای منطقی با نوع داده
* در حالتی که دو طرف ،andعدد یا نوع داده پر یا خالی داشته باشیم و هیچ عملگر مقایسهای (><==) نداشته باشیم از قاعدهی زیر استفاده
میکنیم.
)print(x and y
if x is False -> x
if x is True -> y
][ >print([] and 2) # -
print(5 and 10) # -> 10
print(0 and 4 < 10) # -> 0
print(5 and 4 < 10) # -> True
* در حالتی که دو طرف ،orعدد یا نوع داده پر یا خالی داشته باشیم و هیچ عملگر مقایسهای (><==) نداشته باشیم از قاعدهی زیر استفاده
میکنیم.
)print(x or y
if x is False -> y
if x is True -> x
print([] or 2) # -> 2
print(5 or 10) # -> 5
print(0 or 4 < 10) # -> True
print(5 or 4 < 10) # -> 5
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* باید تعداد متغیرها با تعداد ورودیها برابر باشند و ورودیها بهصورت خودکار رشته هستند.
* برای اینکه بتوانیم تعداد زیادی ورودی بگیریم از لیست استفاده میکنیم ،به اینصورت که یک رشته میگیریم و با کاما و یا ...جدا میکنیم.
)'x = input('Enter string: ').split(',
)print(x
* همچنین میتوانیم از حلقهها (در درسهای آتی بررسی میشود) استفاده کنیم.
])'x = [int(x) for x in input('x: ').split(',
)print(x
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2ساختار تصمیم (بخش اول)
* ساختار کلی:
if True:
)print(x
else:
)print(y
مثال :نمرهی یک دانشآموز را بگیرید و مشخص کنید که قبول شده است یا مردود.
))' x = int(input('mark:
if x < 10:
)'!print('failed
else:
)'!print('passed
* برای اینکه بتوانیم در ifاز شرطهای دیگر استفاده کنیم ،از elifاستفاده میکنیم.
مثال :نمرات یک دانشآموز را گرفته و براساس حروف الفبا رتبه بندی کنیم.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس : 3ساختار تصمیم (بخش دوم +مثال)
* برای حل این مشکل میتوانیم ifهای متعدد بنویسیم که به هم ربطی ندارند و هرکدام بررسی میشوند.
x = 7
if x > 5:
print('yes') # -> yes
if x == 7:
print('of course') # -> of course
if x < 12:
print('absolutely') # -> absolutely
* اگر در ifاز تورفتگی استفاده کنیم و ifدیگری بنویسیم ،آن وقت پس از اینکه شرط اول درست بود ،سراغ شرط دوم میرود.
))' mark = int(input('mark:
if mark > 10:
)'print('passed
if 15 <= mark <= 20:
)'print('A
elif 10 <= mark < 15:
)'print('B
else:
)'print('failed
.1برنامهای بنویسید که تشخیص دهد عددی که کاربر وارد کرده است زوج است یا فرد.
))' x = int(input('x:
if x % 2 == 0:
)'print('even
else:
)'print('odd
.2برنامهای بنویسید که تشخیص دهد بین دو عددی که کاربر وارد میکند ،کدام کوچک تر است.
))' x = int(input('x:
))' y = int(input('y:
if x < y:
)'print('min is x
elif x == y:
)'print('x equal to y
else:
)'print('min is y
.3برنامهای بنویسید که تشخیص دهد بین سه عددی که کاربر وارد میکند ،کدام کوچک تر است.
))' x = int(input('x:
))' y = int(input('y:
))' z = int(input('z:
min_digit = x
if y < min_digit:
min_digit = y
if z < min_digit:
min_digit = z
)print(min_digit
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
تکالیف مبحث ساختار تصمیم و حل آنها: ۵ و۴ درس
. بخش پذیر است یا نه۵ و هم بر2 یک عدد از کاربر بگیرید و بررسی کنید که آیا هم بر.1
x = int(input('x: '))
if x % 2 == 0 and x % 5 == 0:
print('yes')
else:
print('no')
چه، اگر جواب مثبت است. اضالع یک مثلث را از کاربر گرفته و مشخص کنید که آیا این اضالع تشکیل مثلث میدهند یا خیر.2
) قائم الزاویه یا متساوی االضالع، مختلف االضالع،نوع مثلثی؟ (متساوی الساقین
x = int(input('x: '))
y = int(input('y: '))
z = int(input('z: '))
if x + y > z and x + z > y and y + z > x:
print('yes, it is a triangle.')
if x == y == z:
print('it is a equilateral triangle.')
if x == y or x == z or y == z:
print('it is a isosceles triangle')
if x ** 2 + y ** 2 == z ** 2 or x ** 2 + z ** 2 == y ** 2 or y ** 2 + z **
2 == x ** 2:
print('it is a right triangle')
if x != y != z:
print('it is a different sided triangle.')
else:
print('no, it is not a triangle.')
(از کد اسکی. حروف انگلیسی است یا سایر نمادها، یک کاراکتر از کاربر گرفته و مشخص کنید کاراکتر وارد شده عدد است.3
).کمک بگیرید
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۶توابع maxو minو sum
* اگر به ورودی تابع minلیست و یا تاپل خالی ارسال کنیم ،میتوانیم مقداردهی کنیم.
))print(min([], default=567
* برای رشته و حروف انگلیسی نیز میتوان از maxو minاستفاده کنیم ،که براساس اولین حرف هر رشته و مطابق ترتیب حروف الفبا مرتب
میکنند.
))'print(min('reza', 'neda', 'sahel', 'ali # -> ali
))'print(max('reza', 'neda', 'sahel', 'ali # -> sahel
* برای جمع کردن از تابع sumاستفاده میکنیم که ورودی آن باید لیست ،تاپل یا مجموعه باشد.
))]print(sum([1, 5, 6, 7 # -> 19
)))print(sum((1, 5, 6, 7 # -> 19
))}print(sum({1, 5, 6, 7 # -> 19
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
* برای تکرار میتوانیم از حلقهی whileاستفاده کنیم و تا زمانی که شرایط برقرار باشد حلقه تکرار میشود.
x = 0
while x < 3:
)'!print('repeat
x += 1
* در این مثال در هر تکرار به xیکی اضافه میشود و تا زمانی که xکوچکتر از ۳است حلقه تکرار میشود ،پس حلقه سه بار تکرار میشود.
* بعضی حلقهها ممکن است بینهایت اجرا شوند و باید مراقب این حلقهها بود چون ممکن است سبب ایجاد مشکالت فراوانی شوند.
x = 0
while x < 3:
)'!print('repeat
while True:
)'print('ok
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :2حل مثال برای حلقه while
x = 10
while x < 100:
if x % 2 == 0:
)print(x
x += 1
x = 100
while x < 1000:
if x % 3 == 0 and x % 7 == 0:
)print(x
x += 1
.۳برنامهای بنویسید که یک مثلث با یک شکلک خاص ایجاد کند و تعداد خطها را کاربر وارد کند.
r = 1
))' n = int(input('enter rows:
.۵مقسوم علیههای یک عدد را چاپ کنید ( .مشخص کنید که آن عدد بر چه اعدادی بخش پذیر است).
if n == divisor:
)'print('it is a perfect number.
else:
)'print('it is not a perfect number.
.۷برنامهای بنویسید که سری فیبوناچی را چاپ کند ( .تا 2۰جمله و از ۰شروع شود)
* سری فیبوناچی یک دنبالهای از اعداد است که هر عدد از جمع ۲عدد قبل از خودش بهدست میآید و این سری یا از ۰و یا از ۱شروع
میشود)0, 1, 1, 2, 3, 5, 8, 13, 21, 34,...( .
x = 0
y = 1
][ = fibonacci
counter = 0
while counter <= 20:
)fibonacci.append(x
در یک خط نوشتیم تا همزمان اجرا شوند x, y = y, x + y #
counter += 1
)print(fibonacci
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس : ۳دستور break ،continue ،elseدر حلقه +( whileمثال)
مثال :تعدادی عدد دلخواه از کاربر بگیریم و کوچکترین آنها را پیدا کنیم.
))' n = float(input('number:
minimum = n
while True:
)' )s = input('do you want to continue?(y/n
if s.lower() == 'n':
break
))' n = float(input('number:
if n < minimum:
minimum = n
)print(n
* اگر در حلقهی whileبخواهیم به اول حلقه برگردد و بقیه دستورات نادیده گرفته شود از continueاستفاده میکنیم.
i = 0
while i <= 10:
i += 1
if i % 3 == 0:
continue
)print(i
* در whileاز دستور elseمیتوانیم استفاده کنیم ،اما زمانی اجرا میشود که حلقه بهصورت نرمال به اتمام برسد و breakاتفاق نیفتد.
i = 0
while i <= 10:
i += 1
if i % 3 == 0:
continue
)print(i
else:
)'!print('ok
مثال :یک عدد از کاربر بگیریم و تشخیص بدهیم که اول هست یا خیر ( .عدد اول فقط بر خودش و یک بخش پذیر است).
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
) مثال+( تو در توwhile حلقه:۴ درس
i = 0
while i < len(names):
print(names[i])
i += 1
. یک برنامه بنویسید که یک عناصر یک لیست را چاپ کند به صورتی که حروف هر اسم یک در میان حرف بزرگ باشد:مثال
i = 0
while i < len(names):
name = names[i]
j = 0
while j < len(name):
if j % 2 == 0:
print(name[j].upper(), end='')
else:
print(name[j].lower(), end='')
j += 1
print()
i += 1
i = 1
while i <= 10:
j = 1
while j <= 10:
print(f'{i} * {j} = {i * j}', end='\t\t')
j += 1
print()
i += 1
مثال :یک برنامه بنویسید که یک مثلث با یک نماد خاص چاپ کند (.با استفاده از حلقههای تو در تو)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۵ساختار حلقه +( forمثال)
* زمانیکه بخواهیم در توالیها (لیست ،رشته ،تاپل) ،دیکشنری و به طور کلی در تکرار شوندهها پیمایش کنیم از حلقه forاستفاده میکنیم.
* شکل کلی:
For target in obj:
مثال :یک لیست از کد اسکیهای مختلف داریم .یک برنامه بنویسید که کاراکتر این کدها را چاپ کند.
* معموالً زمانی از whileاستفاده میکنیم که نمیدانیم چند بار باید اجرا شود.
* دستورات continue ،breakو elseکه در حلقه whileوجود دارند ،در حلقه forنیز با همان ویژگیها قابل اجرا هستند.
]codes = [67, 76, 34, 343, 234, 168, 935
for c in codes:
if chr(c) == 'ŗ':
break
))print(chr(c
else:
)'print('done
for i in list_1:
for j in list_2:
if i == j:
)print(i
* اگر مقادیر اضافی نسبت به متغیر داشته باشیم ،میتوانیم قبل متغیر * بگذاریم ،تا مقادیر اضافی را به صورت یک لیست به خود بگیرد.
for a, b, *c in [[1, 2, 3, 0], [4, 5, 6, 0]]:
)print(a
)print(b
)print(c
)'*' * print(20
* برای اینکه ،forکلید ،مقدار و کلید – مقدار را انتخاب کند میتوانیم از متدهای values ،keyو itemsاستفاده کنیم.
}d = {'a': 1, 'b': 2, 'c': 3
for k in d.keys():
)print(k
for v in d.values():
)print(v
for i in d.items():
)print(i
* اگر بخواهیم forدر دیکشنری کلید – مقدار را نیز به صورت کلید – مقدار چاپ کند از دو متغیر و متد itemsاستفاده میکنیم.
}d = {'a': 1, 'b': 2, 'c': 3
for k, v in d.items():
)'}print(f'{k} : {v
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
) مثال+( range آشنایی با:۶ درس
n = int(input('number: '))
m = 1
for i in range(1, n + 1):
m *= i
print(m)
مثال :یک برنامه بنویسید که ارقام یک عدد را از آخر به اول بنویسد.
)' n = input('number:
'' = s
for i in range(len(n) - 1, -1, -1):
]s += n[i
)print(s
))' n = int(input('number:
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۷تکنیک حلقه سازی ()enumerate, zip, reversed, sorted
* برای شماره گذاری عناصر توالی میتوانیم از تابع enumerateاستفاده کنیم ،این تابع شماره گذاری را از 0و مطابق ایندکس عناصر
شروع میکند.
)))]'print(list(enumerate(['a', 'b', 'c ])'# -> [(0, 'a'), (1, 'b'), (2, 'c
for i in reversed(y):
)'print(i, end='- # -> 36-25-18-20-
* برای مرتب کردن از تابع sortedاستفاده میکنیم ،این تابع اعداد را از کوچک به بزرگ و رشته را بر اساس حروف الفبا مرتب میکند.
]'s = ['reza', 'ali', 'neda', 'mina
]x = [20, 18, 25, 36
for i in sorted(s):
)'print(i, end='- # -> ali-mina-neda-reza-
for i in sorted(x):
)'print(i, end='- # -> 18-20-25-36-
* اگر بخواهیم مرتب سازی را برعکس انجام دهیم از تابع reversedبه همراه sortedاستفاده میکنیم.
روش اول:
]x = [20, 18, 25, 36
for i in reversed(sorted(x)):
print(i, end='-') # -> 36-25-20-18-
روش دوم:
]x = [20, 18, 25, 36
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس :۸تولید عدد تصادفی با ماژول +( randomمثال)
روش اول:
import random
* برای تولید عدد تصادفی در بازهی 0تا 1میتوانیم از تابع randomاستفاده کنیم.
from random import random
* برای تولید یک عدد تصادفی بر اساس یک عدد خاص و تولید دوباره همان عدد تصادفی بر اساس همان عدد میتوانیم از تابع seedاستفاده
کنیم.
* تابع seedبه ما کمک میکند بفهمیم چه اعداد تصادفی تولید شده است.
from random import random, seed
)seed(100
))(print(random # -> 0.1456692551041303
* اگر دوباره از عدد 100استفاده کنیم باز همین عدد تصادفی تولید میشود.
from random import random, seed
)seed(100
))(print(random # -> 0.1456692551041303
* برای تغییر بازهی randomاز بازهی 0و 1به بازهی دلخواه میتوانیم از روش زیر استفاده کنیم.
))min + (random * (max – min
from random import random
* برای تولید عدد تصادفی صحیح میتوانیم از تابع intاستفاده کنیم ،اما بهتر است از تابع randintاستفاده کنیم.
* وقتی از randintاستفاده میکنیم ممکن است ورودی دوم نیز به عنوان عددی تصادفی تولید شود.
from random import randint
* برای تشکیل یک لیست با چند عنصر از یک لیست دیگر به صورت تصادفی و با تعداد دلخواه از تابع sampleاستفاده میکنیم.
from random import sample
)print(head
)print(tail
مثال :یک برنامه بنویسید که اگر یک سکه را 1۰۰۰۰بار بیندازیم هر وجه چند بار میآید.
)print(toss
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
درس ۹و :1۰تکالیف مبحث حلقه و اعداد تصادفی و حل آنها
.1برنامهای بنویسید که دو عدد از کاربر گرفته و اعداد مابین آنها را نمایش دهد.
))' x = int(input('x:
))' y = int(input('y:
.2برنامهای بنویسید که دو عدد صحیح را گرفته و مقسوم علیههای مشترکشان را نمایش دهد.
))' x = int(input('x:
))' y = int(input('y:
)m = min(x, y
.۳برنامهای را بنویسید که دو عدد صحیح را گرفته و بزرگترین مقسوم علیه مشترکشان را نمایش دهد.
))' x = int(input('x:
))' y = int(input('y:
)m = min(x, y
.۴برنامهای را بنویسید که دو عدد صحیح را گرفته و کوچکترین مضرب مشترکشان را نمایش دهد.
))' x = int(input('x:
))' y = int(input('y:
)min_ = min(x, y
)max_ = max(x, y
))' x = int(input('x:
i = 0
while x > 0:
x //= 10
i += 1
)print(i
.۶برنامهای بنویسید که تعداد سطر را از کاربر گرفته و شکل زیر را رسم کند.
*
**
***
****
))' r = int(input('r:
.۷ما یک لیست دهتایی از اسمهای مختلق داریم .برنامهای بنویسید که کاربر یک اسم را در ذهن خود بگیرد و برنامه حدس بزند
آن اسم چیست .سپس از کاربر بپرسد که درست حدس زده است یا خیر .اگر اشتباه بود اسم دیگری حدس بزند .برنامه نباید
اسمی را که قبالً کاربر گفته است اشتباه است ،دوباره نشان دهد.
مثالً لیست ما شامل ]” [“A”,”B”,”Cاست .کاربر در ذهن خود Aرا انتخاب میکند .برنامه حدس میزند حرف انتخابی B
است و میپرسد آیا درست حدس زدهام؟ کاربر میگوید نه .برنامه دوباره حدس میزند Aو میپرسد درست حدس زده ام؟ کاربر
میگوید بله و برنامه تمام میشود.
while True:
print('select your option:\n\t1)Encrypt\n\t2)Decrypt\n\t3)Exit')
choice = input('your choice: ')
if choice == '1':
plain_text = input('text: ')
encrypted_text = ''
for i in plain_text:
n = chr((ord(i) * 2) + 67)
encrypted_text += n
print(encrypted_text)
break
elif choice == '2':
encrypted_text = input('text: ')
decrypted_text = ''
for i in encrypted_text:
m = chr((ord(i) - 67) // 2)
decrypted_text += m
print(decrypted_text)
break
elif choice == '3':
print('see ya :)')
break
else:
print('wrong option!')
continue
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
پسورد ساز: مینی پروژه:12 درس
import string
a = string.ascii_lowercase
A = string.ascii_uppercase
number = '0123456789'
symbols = '~!@#$%^&*()_+=][{}><?/'
pas = a + A + number + symbols
final_password = ''
while True:
print('select your option:\n\t1)create a password\n\t2)Exit')
s = input('your choice: ')
if s == '1':
r = int(input('how many characters? '))
for i in range(r):
chr_choose = choice(pas)
final_password += chr_choose
print('your password is:', final_password, '\n', 20 * '*')
if s == '2':
print('bye! \n', 20 * '*')
break
else:
print('select 1 or 2\n', 20 * '*')
continue
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
تایمر ساده: مینی پروژه:1۳ درس
import time
while True:
print('Do you want to start the timer?\n\t-yes\n\t-no')
s = input('your option: ')
if s.lower() == 'yes':
hours = int(input('enter hours: '))
minutes = int(input('enter minutes: '))
seconds = int(input('enter seconds: '))
total = (hours * 60 * 60) + (minutes * 60) + seconds
for i in range(total, -1, -1):
print(i)
time.sleep(1)
print('\n', 20 * '-')
break
if s.lower() == 'no':
print('ok!\n', 20 * '-')
break
else:
print('choose yes or no\nlets try it again')
continue