30-Days-Of-Python/Persain/03_operators.md

323 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center">
<h1> ۳۰ روز پایتون: روز ۳ - عملگرها</h1>
<a class="header-badge" target="_blank" href="https://www.linkedin.com/in/asabeneh/">
<img src="https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social">
</a>
<a class="header-badge" target="_blank" href="https://twitter.com/Asabeneh">
<img alt="دنبال کردن در توییتر" src="https://img.shields.io/twitter/follow/asabeneh?style=social">
</a>
<sub>نویسنده:
<a href="https://www.linkedin.com/in/asabeneh/" target="_blank">Asabeneh Yetayeh</a><br>
<small> ویرایش دوم: ژوئیه ۲۰۲۱</small>
</sub>
</div>
[<< روز ۲](./02_variables_builtin_functions.md) | [روز ۴ >>](./04_strings.md)
![30DaysOfPython](../images/30DaysOfPython_banner3@2x.png)
- [📘 روز ۳](#-روز-۳)
- [بولین](#بولین)
- [عملگرها](#عملگرها)
- [عملگرهای انتساب](#عملگرهای-انتساب)
- [عملگرهای حسابی:](#عملگرهای-حسابی)
- [عملگرهای مقایسه‌ای](#عملگرهای-مقایسه‌ای)
- [عملگرهای منطقی](#عملگرهای-منطقی)
- [💻 تمرینات - روز ۳](#-تمرینات---روز-۳)
# 📘 روز ۳
## بولین
نوع داده بولین (Boolean) یکی از دو مقدار را نشان می‌دهد: `True` یا `False`. استفاده از این نوع داده زمانی که شروع به استفاده از عملگرهای مقایسه‌ای کنیم، روشن خواهد شد. برخلاف جاوا اسکریپت، حرف اول **T** برای True و **F** برای False باید بزرگ باشد.
**مثال: مقادیر بولین**
```py
print(True)
print(False)
```
## عملگرها
زبان پایتون از چندین نوع عملگر پشتیبانی می‌کند. در این بخش، ما بر روی تعدادی از آنها تمرکز خواهیم کرد.
### عملگرهای انتساب
عملگرهای انتساب برای اختصاص دادن مقادیر به متغیرها استفاده می‌شوند. بیایید `=` را به عنوان مثال در نظر بگیریم. علامت مساوی در ریاضیات نشان می‌دهد که دو مقدار برابر هستند، اما در پایتون به این معنی است که ما در حال ذخیره یک مقدار در یک متغیر خاص هستیم و آن را انتساب یا اختصاص دادن مقدار به متغیر می‌نامیم. جدول زیر انواع مختلف عملگرهای انتساب پایتون را که از [w3school](https://www.w3schools.com/python/python_operators.asp) گرفته شده است، نشان می‌دهد.
### عملگرهای حسابی:
- جمع (+): a + b
- تفریق (-): a - b
- ضرب (\*): a \* b
- تقسیم (/): a / b
- باقیمانده (%): a % b
- تقسیم صحیح (//): a // b
- توان (\*\*): a \*\* b
**مثال: اعداد صحیح**
```py
# عملیات حسابی در پایتون
# اعداد صحیح
print('جمع: ', 1 + 2) # 3
print('تفریق: ', 2 - 1) # 1
print('ضرب: ', 2 * 3) # 6
print ('تقسیم: ', 4 / 2) # 2.0 تقسیم در پایتون عدد اعشاری می‌دهد
print('تقسیم: ', 6 / 2) # 3.0
print('تقسیم: ', 7 / 2) # 3.5
print('تقسیم بدون باقیمانده: ', 7 // 2) # 3, نتیجه را بدون بخش اعشاری یا باقیمانده می‌دهد
print ('تقسیم بدون باقیمانده: ',7 // 3) # 2
print('باقیمانده: ', 3 % 2) # 1, باقیمانده را می‌دهد
print('توان: ', 2 ** 3) # 8 یعنی 2 * 2 * 2
```
**مثال: اعداد اعشاری**
```py
# اعداد اعشاری
print('عدد ممیز شناور، پی', 3.14)
print('عدد ممیز شناور، گرانش', 9.81)
```
**مثال: اعداد مختلط**
```py
# اعداد مختلط
print('عدد مختلط: ', 1 + 1j)
print('ضرب اعداد مختلط: ',(1 + 1j) * (1 - 1j))
```
بیایید یک متغیر تعریف کرده و یک نوع داده عددی به آن اختصاص دهیم. من قصد دارم از متغیر تک کاراکتری استفاده کنم اما به یاد داشته باشید که عادت به تعریف چنین متغیرهایی نکنید. نام متغیرها باید همیشه یادآور (mnemonic) باشند.
**مثال:**
```python
# ابتدا تعریف متغیر در بالا
a = 3 # a نام متغیر و 3 یک نوع داده صحیح است
b = 2 # b نام متغیر و 2 یک نوع داده صحیح است
# عملیات حسابی و اختصاص نتیجه به یک متغیر
total = a + b
diff = a - b
product = a * b
division = a / b
remainder = a % b
floor_division = a // b
exponential = a ** b
# من باید به جای total از sum استفاده می‌کردم اما sum یک تابع داخلی است - سعی کنید از بازنویسی توابع داخلی خودداری کنید
print(total) # اگر خروجی خود را با یک رشته برچسب‌گذاری نکنید، هرگز نمی‌دانید نتیجه از کجا آمده است
print('a + b = ', total)
print('a - b = ', diff)
print('a * b = ', product)
print('a / b = ', division)
print('a % b = ', remainder)
print('a // b = ', floor_division)
print('a ** b = ', exponential)
```
**مثال:**
```py
print('== جمع، تفریق، ضرب، تقسیم، باقیمانده ==')
# تعریف مقادیر و سازماندهی آنها با هم
num_one = 3
num_two = 4
# عملیات حسابی
total = num_one + num_two
diff = num_two - num_one
product = num_one * num_two
div = num_two / num_one
remainder = num_two % num_one
# چاپ مقادیر با برچسب
print('مجموع: ', total)
print('تفاضل: ', diff)
print('حاصل‌ضرب: ', product)
print('تقسیم: ', div)
print('باقیمانده: ', remainder)
```
بیایید شروع به اتصال نقاط کنیم و از آنچه قبلاً یاد گرفته‌ایم برای محاسبه (مساحت، حجم، چگالی، وزن، محیط، فاصله، نیرو) استفاده کنیم.
**مثال:**
```py
# محاسبه مساحت یک دایره
radius = 10 # شعاع یک دایره
area_of_circle = 3.14 * radius ** 2 # دو علامت * به معنای توان است
print('مساحت دایره:', area_of_circle)
# محاسبه مساحت یک مستطیل
length = 10
width = 20
area_of_rectangle = length * width
print('مساحت مستطیل:', area_of_rectangle)
# محاسبه وزن یک جسم
mass = 75
gravity = 9.81
weight = mass * gravity
print(weight, 'N') # افزودن واحد به وزن
# محاسبه چگالی یک مایع
mass = 75 # به کیلوگرم
volume = 0.075 # به متر مکعب
density = mass / volume # 1000 Kg/m^3
print(density, 'Kg/m^3') # افزودن واحد به چگالی
```
### عملگرهای مقایسه‌ای
در برنامه‌نویسی ما مقادیر را مقایسه می‌کنیم، از عملگرهای مقایسه‌ای برای مقایسه دو مقدار استفاده می‌کنیم. ما بررسی می‌کنیم که آیا یک مقدار بزرگتر، کوچکتر یا مساوی با مقدار دیگر است. جدول زیر عملگرهای مقایسه‌ای پایتون را که از [w3shool](https://www.w3schools.com/python/python_operators.asp) گرفته شده است، نشان می‌دهد.
**مثال: عملگرهای مقایسه‌ای**
```py
print(3 > 2) # True، چون 3 بزرگتر از 2 است
print(3 >= 2) # True، چون 3 بزرگتر از 2 است
print(3 < 2) # False، چون 3 بزرگتر از 2 است
print(2 < 3) # True، چون 2 کوچکتر از 3 است
print(2 <= 3) # True، چون 2 کوچکتر از 3 است
print(3 == 2) # False، چون 3 مساوی 2 نیست
print(3 != 2) # True، چون 3 مساوی 2 نیست
print(len('mango') == len('avocado')) # False
print(len('mango') != len('avocado')) # True
print(len('mango') < len('avocado')) # True
print(len('milk') != len('meat')) # False
print(len('milk') == len('meat')) # True
print(len('tomato') == len('potato')) # True
print(len('python') > len('dragon')) # False
# مقایسه چیزی یا True می‌دهد یا False
print('True == True: ', True == True)
print('True == False: ', True == False)
print('False == False:', False == False)
```
علاوه بر عملگرهای مقایسه‌ای بالا، پایتون از موارد زیر نیز استفاده می‌کند:
- `is`: اگر هر دو متغیر یک شیء یکسان باشند، true برمی‌گرداند (x is y)
- `is not`: اگر هر دو متغیر یک شیء یکسان نباشند، true برمی‌گرداند (x is not y)
- `in`: اگر لیست مورد نظر شامل یک آیتم خاص باشد، True برمی‌گرداند (x in y)
- `not in`: اگر لیست مورد نظر شامل یک آیتم خاص نباشد، True برمی‌گرداند (x not in y)
<!-- end list -->
```py
print('1 is 1', 1 is 1) # True - چون مقادیر داده یکسان هستند
print('1 is not 2', 1 is not 2) # True - چون 1 برابر 2 نیست
print('A in Asabeneh', 'A' in 'Asabeneh') # True - A در رشته پیدا شد
print('B not in Asabeneh', 'B' in 'Asabeneh') # False - حرف بزرگ B وجود ندارد
print('coding' in 'coding for all') # True - چون coding for all کلمه coding را دارد
print('a in an:', 'a' in 'an') # True
print('4 is 2 ** 2:', 4 is 2 ** 2) # True
```
### عملگرهای منطقی
برخلاف سایر زبان‌های برنامه‌نویسی، پایتون از کلمات کلیدی `and`، `or` و `not` برای عملگرهای منطقی استفاده می‌کند. عملگرهای منطقی برای ترکیب عبارات شرطی استفاده می‌شوند:
```py
print(3 > 2 and 4 > 3) # True - چون هر دو عبارت درست هستند
print(3 > 2 and 4 < 3) # False - چون عبارت دوم نادرست است
print(3 < 2 and 4 < 3) # False - چون هر دو عبارت نادرست هستند
print('True and True: ', True and True)
print(3 > 2 or 4 > 3) # True - چون هر دو عبارت درست هستند
print(3 > 2 or 4 < 3) # True - چون یکی از عبارت‌ها درست است
print(3 < 2 or 4 < 3) # False - چون هر دو عبارت نادرست هستند
print('True or False:', True or False)
print(not 3 > 2) # False - چون 3 > 2 درست است، پس not True نتیجه False می‌دهد
print(not True) # False - نقیض، عملگر not مقدار true را به false تبدیل می‌کند
print(not False) # True
print(not not True) # True
print(not not False) # False
```
🌕 شما انرژی بی‌پایانی دارید. شما به تازگی چالش‌های روز سوم را به پایان رسانده‌اید و سه قدم در مسیر خود به سوی بزرگی جلوتر هستید. اکنون چند تمرین برای مغز و عضلات خود انجام دهید.
## 💻 تمرینات - روز ۳
1. سن خود را به عنوان یک متغیر صحیح تعریف کنید.
2. قد خود را به عنوان یک متغیر اعشاری تعریف کنید.
3. یک متغیر تعریف کنید که یک عدد مختلط را ذخیره کند.
4. اسکریپتی بنویسید که از کاربر بخواهد پایه و ارتفاع مثلث را وارد کند و مساحت این مثلث را محاسبه کند (مساحت = ۰.۵ \* پایه \* ارتفاع).
<!-- end list -->
```py
پایه را وارد کنید: 20
ارتفاع را وارد کنید: 10
مساحت مثلث 100 است
```
5. اسکریپتی بنویسید که از کاربر بخواهد ضلع a، ضلع b و ضلع c مثلث را وارد کند. محیط مثلث را محاسبه کنید (محیط = a + b + c).
<!-- end list -->
```py
ضلع a را وارد کنید: 5
ضلع b را وارد کنید: 4
ضلع c را وارد کنید: 3
محیط مثلث 12 است
```
6. طول و عرض یک مستطیل را با استفاده از ورودی کاربر دریافت کنید. مساحت آن (مساحت = طول \* عرض) و محیط آن (محیط = ۲ \* (طول + عرض)) را محاسبه کنید.
7. شعاع یک دایره را با استفاده از ورودی کاربر دریافت کنید. مساحت (مساحت = pi \* r \* r) و محیط (c = 2 \* pi \* r) آن را محاسبه کنید که در آن pi = 3.14 است.
8. شیب، طول از مبدأ x و عرض از مبدأ y معادله y = 2x - 2 را محاسبه کنید.
9. شیب (m = y2-y1/x2-x1) است. شیب و [فاصله اقلیدسی](https://www.google.com/search?q=https://en.wikipedia.org/wiki/Euclidean_distance%23:~:text%3DIn%2520mathematics%252C%2520the%2520Euclidean%2520distance,being%2520called%2520the%2520Pythagorean%2520distance.) بین نقطه (۲, ۲) و نقطه (۶, ۱۰) را پیدا کنید.
10. شیب‌ها را در تمرین‌های ۸ و ۹ مقایسه کنید.
11. مقدار y را (y = x^2 + 6x + 9) محاسبه کنید. مقادیر مختلف x را امتحان کنید و بفهمید در چه مقدار x، مقدار y برابر با ۰ می‌شود.
12. طول 'python' و 'dragon' را پیدا کرده و یک عبارت مقایسه‌ای نادرست (False) بسازید.
13. از عملگر `and` برای بررسی اینکه آیا 'on' در هر دو کلمه 'python' و 'dragon' یافت می‌شود، استفاده کنید.
14. `I hope this course is not full of jargon`. از عملگر `in` برای بررسی اینکه آیا `jargon` در این جمله وجود دارد، استفاده کنید.
15. 'on' در هر دو کلمه dragon و python وجود ندارد (این یک عبارت برای بررسی درستی یا نادرستی است، نه یک دستور).
16. طول متن `python` را پیدا کرده و مقدار آن را به float و سپس به string تبدیل کنید.
17. اعداد زوج بر ۲ بخش‌پذیر هستند و باقیمانده آنها صفر است. چگونه با استفاده از پایتون بررسی می‌کنید که یک عدد زوج است یا نه؟
18. بررسی کنید که آیا حاصل تقسیم صحیح ۷ بر ۳ برابر با مقدار تبدیل شده `int(2.7)` است.
19. بررسی کنید که آیا `type('10')` برابر با `type(10)` است.
20. بررسی کنید که آیا `int('9.8')` برابر با 10 است.
21. اسکریپتی بنویسید که از کاربر بخواهد ساعت‌ها و نرخ در ساعت را وارد کند. دستمزد شخص را محاسبه کنید.
<!-- end list -->
```py
ساعتها را وارد کنید: 40
نرخ در ساعت را وارد کنید: 28
درآمد هفتگی شما 1120 است
```
22. اسکریپتی بنویسید که از کاربر بخواهد تعداد سال‌ها را وارد کند. تعداد ثانیه‌هایی که یک شخص می‌تواند زندگی کند را محاسبه کنید. فرض کنید یک شخص می‌تواند صد سال زندگی کند.
<!-- end list -->
```py
تعداد سالهایی که زندگی کردهاید را وارد کنید: 100
شما 3153600000 ثانیه زندگی کردهاید.
```
23. یک اسکریپت پایتون بنویسید که جدول زیر را نمایش دهد.
<!-- end list -->
```py
1 1 1 1 1
2 1 2 4 8
3 1 3 9 27
4 1 4 16 64
5 1 5 25 125
```
🎉 تبریک می‌گویم\! 🎉
[<< روز ۲](./02_variables_builtin_functions.md) | [روز ۴ >>](./04_strings.md)