🐍 Python & Raspberry 🐍
❓ کدوم یک نتیجهاش False هست؟
📸 میریم سراغ جواب این سوال
📝 احتمالا با list comprehension آشنا هستید:
1. set comprehension (set comp)
2. dictionary comprehension (dict comp)
3. generator expression (genexpr!)
1️⃣ همینجوری که برای لیست نوشتیم و تعریف کردیم، برای مجموعهها هم میتونیم بکار ببریم. منتهی این یکی، مقادیر رو توی یک مجموعه جمعآوری میکنه، نه توی لیست! و مثلا طبق خواص مجموعه، اعضای تکراری حذف میشن یا مثلا unhashable typeها رو نمیتونیم داخلش قرار بدیم و ... و به این شکل هست:
"Generally, lists are for looping; tuples for structs. Lists are homogeneous; tuples heterogeneous. Lists for variable length."
برگردیم به بحث اصلی! گفتیم که یک iterator هست، پس همه مقادیر رو درجا به ما نمیده! و برای گرفتن مقدار، باید next کنیم (و وقتی هم مقداری باقی نمونده باشه، StopIteration میده). میشه unpack هم کرد، و ... مثلا:
📝 احتمالا با list comprehension آشنا هستید:
[expression for variable in iterable if condition]داخل این، روی iterable حلقه زده میشه و مقداری به variable اختصاص داده میشه، بعد اگه شرط condition (که گذاشتنش اختیاریه) برقرار بود، وارد بخش expression میشه و مقدار اون بخش رو تولید میکنه و میذاره توی لیست. مثلا:
>>> [x for x in range(5)]رفع ابهام: میتونیم از if-else توی بخش expression استفاده کنیم؛ اما دقت کنید که این، با بخش condition فرق داره. در واقع، بخش condition اگه برقرار نبود، اصلا وارد بخش expression نمیشه که مقداری (توی اون دور از حلقه) اختصاص داده بشه؛ اما وقتی condition برقرار بود و [در نتیجه] وارد بخش expression شد، قطعا باید مقداری توی اون دور از حلقه قرار داده بده (برای همین، اگه قراره داخل expression، با شرط مقدار بذاریم، باید با if-else نوشته بشه که بهش میگیم conditional expression):
[0, 1, 2, 3, 4]
>>> [x**2 for x in range(5)]
[0, 1, 4, 9, 16]
>>> [x**2 for x in range(5) if x%2==0]
[0, 4, 16]
>>> [(x if x!=5 else "Hop!") for x in range(1, 6) if x%2==1]➕ البته میتونید بصورت تو در تو هم استفاده کنید که بهش Nested Comprehensions میگن. مثلا:
[1, 3, 'Hop!']
>>> [🔎 اما آیا فقط list comprehension داریم؟ .... نه! ۳ مورد مشابه دیگه هم داریم:
... [x * y for y in range(5)]
... for x in range(5)
... ]
[
[0, 0, 0, 0, 0],
[0, 1, 2, 3, 4],
[0, 2, 4, 6, 8],
[0, 3, 6, 9, 12],
[0, 4, 8, 12, 16]
]
1. set comprehension (set comp)
2. dictionary comprehension (dict comp)
3. generator expression (genexpr!)
1️⃣ همینجوری که برای لیست نوشتیم و تعریف کردیم، برای مجموعهها هم میتونیم بکار ببریم. منتهی این یکی، مقادیر رو توی یک مجموعه جمعآوری میکنه، نه توی لیست! و مثلا طبق خواص مجموعه، اعضای تکراری حذف میشن یا مثلا unhashable typeها رو نمیتونیم داخلش قرار بدیم و ... و به این شکل هست:
{expression for variable in iterable if condition}2️⃣ به همین ترتیب هم برای دیکشنری؛ منتهی دقت کنید که این سری باید هم key رو مشخص کنیم هم value رو:
{expr1: expr2 for variable in iterable if condition}3️⃣ میرسیم به genexpr! فرم کلی generator expression هم مشابه موارد قبلی هست، منتهی با پرانتز!
(expression for variable in iterable if condition)اما دقت کنید که این، تاپل نیست! بلکه یک iterator هست. چرا؟ به نقل از این لینک، فرق اساسی تاپل با چیزایی که گفتیم، توی این هست که شما نمیتونید به یک تاپل، بعد از تشکیلش، مثلا مقداری append کنید یا extend کنید یا ... و در کل immutable هست، پس اگه یک آبجکتی ازش تشکیل میشه (در ابتدای comp)، نمیشه دوباره مقداری بهش اضافه کرد. حتی یک جا به struct توی C تشبیهش کردن! و به قولی:
"Generally, lists are for looping; tuples for structs. Lists are homogeneous; tuples heterogeneous. Lists for variable length."
برگردیم به بحث اصلی! گفتیم که یک iterator هست، پس همه مقادیر رو درجا به ما نمیده! و برای گرفتن مقدار، باید next کنیم (و وقتی هم مقداری باقی نمونده باشه، StopIteration میده). میشه unpack هم کرد، و ... مثلا:
>>> (x**2 for x in range(5))... و بعد از چندبار next کردن ...:
<generator object <genexpr> at 0x7fa76d750580>
>>> itr = (x**2 for x in range(5))
>>> next(itr)
0
>>> next(itr)🔬 همونطور که گفتیم، میتونیم اون رو unpack کنیم و در نتیجه میشه توی تاپل (و لیست و مجموعه و ...) هم ذخیره کرد. یا حتی میتونید مستقیما اون رو به tuple یا list یا ... بدید. مثلا:
16
>>> next(itr)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> tuple(x**2 for x in range(5))یا که بیاید کمی خفنتر بنویسید:) و اول unpack کنید و بعد، با یک ویرگول توی آخرش، بگید که همه مقادیر داخل یک تاپل برن (دقت کنید که اینجا بعد از گرفتن مقادیر، یک آبجکت تاپل تشکیل میشه و مقادیر باهم داخلش قرار میگیرن):
(0, 1, 4, 9, 16)
>>> *(x**2 for x in range(5)),ازش میشه توی دادن آرگومان به تابعها هم استفاده کرد (مخصوصا توابعی مثل print که چندین آرگومان میگیرن و معمولا با پارامتر *args اینهارو تشخیص میدیم)؛ مثلا کدی که عدد بگیره و به تعداد اون، جملات ابتدایی دنباله فیبوناچی رو نشون بده (فرض کنید تابع fibonacci برای گرفتن عدد دنباله نوشته شده) :
(0, 1, 4, 9, 16)
>>> print(*(
... fibonacci(x)
... for x in range(1, int(input("count: "))+1)
... ), sep = ' -> '
... )
count: 10
1 -> 1 -> 2 -> 3 -> 5 -> 8 -> 13 -> 21 -> 34 -> 55
🆔 @raspberry_pythonStack Overflow
Why is there no tuple comprehension in Python?
As we all know, there's list comprehension, like
[i for i in [1, 2, 3, 4]]
and there is dictionary comprehension, like
{i:j for i, j in {1: 'a', 2: 'b'}.items()}
but
(i for i in (1, 2, 3))
wi...
[i for i in [1, 2, 3, 4]]
and there is dictionary comprehension, like
{i:j for i, j in {1: 'a', 2: 'b'}.items()}
but
(i for i in (1, 2, 3))
wi...
Websites where companies post part-time, full-time and remote positions for you to apply to
Indeed — https://www.indeed.com
Craigslist — https://www.craigslist.com
Simply Hired — https://www.simplyhired.com
Authentic Jobs — https://authenticjobs.com
Robert Half — https://www.roberthalf.com
Krop — https://www.krop.com
Career Builder — https://www.careerbuilder.com
Linkedin Profinder — https://www.linkedin.com/profinder
Mashable — http://jobs.mashable.com/jobs/browse
Smashing Magazine — https://www.smashingmagazine.com/jobs
Power To Fly (Women) — https://powertofly.com
Who Is Hiring — https://whoishiring.io
WebDevJobs — https://webdevjobs.co
Aquent — https://aquent.com
Idealist — https://www.idealist.org
The Muse — https://www.themuse.com
Landing Jobs (UK) — https://landing.jobs
Sologig — https://www.sologig.com
Dice — https://www.dice.com
WPHired (Wordpress) — https://www.wphired.com
GitHub Jobs — https://jobs.github.com
Stack Overflow — https://stackoverflow.com/jobs
Startup Job Find
Websites that specialize in jobs for startup companies
Angel — https://angel.co
Underdog — https://underdog.io
Product Hunt — https://www.producthunt.com/jobs
Startupers — https://www.startupers.com
ycombinator — https://news.ycombinator.com/jobs
Freelancer Sites
Websites where individuals and companies post specific projects for freelancers
Upwork — https://www.upwork.com
Freelancer — https://www.freelancer.com
Freelancermap — https://www.freelancermap.com
Guru — https://www.guru.com
Outsource — https://outsource.com
Local Solo — https://localsolo.com
People Per Hour — https://www.peopleperhour.com
CloudPeeps — https://www.cloudpeeps.com
GigGrabbers — https://www.giggrabbers.com
Lemon.io — https://lemon.io
Screened Freelancer Sites
Websites where they screen the freelancers to get the best possible providers for clients
Toptal — https://www.toptal.com
Coworks — https://coworks.com
Gun — https://www.gun.io
Folyo — https://folyo.me
Remote Jobs
Websites that focus on getting people remote work
Remoteco — https://remote.co/remote-jobs
We Work Remotely — https://weworkremotely.com
Remotive — https://remotive.io
Skip The Drive — https://www.skipthedrive.com
Working Nomads — https://www.workingnomads.co/jobs
Flex Jobs — https://www.flexjobs.com
Youteam — http://youteam.io
Micro Jobs/Services
Websites where you can post a service that you offer, usually for a low price
Fiverr — https://www.fiverr.com
Envato Studio — https://studio.envato.com
Gigbucks — https://gigbucks.com
Zeerk — https://zeerk.com
Task Army — https://taskarmy.com
Damongo — https://www.damongo.com
For Designers
Websites that are geared more toward designers and UI/UX
Behance — https://www.behance.net
Dribble — https://dribbble.com/jobs
Coroflot — https://www.coroflot.com/design-jobs
UX Job Board — https://www.uxjobsboard.com
DesignHill — https://www.designhill.com
Contests & Challenges
Websites that offer challenges and contests but at the same time, can get you hired
Topcoder — https://www.topcoder.com
Challenge Rocket — https://challengerocket.com
Hacker Rank — https://www.hackerrank.com
Big Companies
Microsoft — https://careers.microsoft.com/us/en
Google — https://careers.google.com/jobs
Amazon — https://www.amazon.jobs/
Apple — https://www.apple.com/jobs/us
Netflix — https://jobs.netflix.com
Ebay — https://careers.ebayinc.com/join-our-team/start-your-search
🆔 @raspberry_python
Indeed — https://www.indeed.com
Craigslist — https://www.craigslist.com
Simply Hired — https://www.simplyhired.com
Authentic Jobs — https://authenticjobs.com
Robert Half — https://www.roberthalf.com
Krop — https://www.krop.com
Career Builder — https://www.careerbuilder.com
Linkedin Profinder — https://www.linkedin.com/profinder
Mashable — http://jobs.mashable.com/jobs/browse
Smashing Magazine — https://www.smashingmagazine.com/jobs
Power To Fly (Women) — https://powertofly.com
Who Is Hiring — https://whoishiring.io
WebDevJobs — https://webdevjobs.co
Aquent — https://aquent.com
Idealist — https://www.idealist.org
The Muse — https://www.themuse.com
Landing Jobs (UK) — https://landing.jobs
Sologig — https://www.sologig.com
Dice — https://www.dice.com
WPHired (Wordpress) — https://www.wphired.com
GitHub Jobs — https://jobs.github.com
Stack Overflow — https://stackoverflow.com/jobs
Startup Job Find
Websites that specialize in jobs for startup companies
Angel — https://angel.co
Underdog — https://underdog.io
Product Hunt — https://www.producthunt.com/jobs
Startupers — https://www.startupers.com
ycombinator — https://news.ycombinator.com/jobs
Freelancer Sites
Websites where individuals and companies post specific projects for freelancers
Upwork — https://www.upwork.com
Freelancer — https://www.freelancer.com
Freelancermap — https://www.freelancermap.com
Guru — https://www.guru.com
Outsource — https://outsource.com
Local Solo — https://localsolo.com
People Per Hour — https://www.peopleperhour.com
CloudPeeps — https://www.cloudpeeps.com
GigGrabbers — https://www.giggrabbers.com
Lemon.io — https://lemon.io
Screened Freelancer Sites
Websites where they screen the freelancers to get the best possible providers for clients
Toptal — https://www.toptal.com
Coworks — https://coworks.com
Gun — https://www.gun.io
Folyo — https://folyo.me
Remote Jobs
Websites that focus on getting people remote work
Remoteco — https://remote.co/remote-jobs
We Work Remotely — https://weworkremotely.com
Remotive — https://remotive.io
Skip The Drive — https://www.skipthedrive.com
Working Nomads — https://www.workingnomads.co/jobs
Flex Jobs — https://www.flexjobs.com
Youteam — http://youteam.io
Micro Jobs/Services
Websites where you can post a service that you offer, usually for a low price
Fiverr — https://www.fiverr.com
Envato Studio — https://studio.envato.com
Gigbucks — https://gigbucks.com
Zeerk — https://zeerk.com
Task Army — https://taskarmy.com
Damongo — https://www.damongo.com
For Designers
Websites that are geared more toward designers and UI/UX
Behance — https://www.behance.net
Dribble — https://dribbble.com/jobs
Coroflot — https://www.coroflot.com/design-jobs
UX Job Board — https://www.uxjobsboard.com
DesignHill — https://www.designhill.com
Contests & Challenges
Websites that offer challenges and contests but at the same time, can get you hired
Topcoder — https://www.topcoder.com
Challenge Rocket — https://challengerocket.com
Hacker Rank — https://www.hackerrank.com
Big Companies
Microsoft — https://careers.microsoft.com/us/en
Google — https://careers.google.com/jobs
Amazon — https://www.amazon.jobs/
Apple — https://www.apple.com/jobs/us
Netflix — https://jobs.netflix.com
Ebay — https://careers.ebayinc.com/join-our-team/start-your-search
🆔 @raspberry_python
Indeed
Job Search | Indeed
With Indeed, you can search millions of jobs online to find the next step in your career. With tools for job search, CVs, company reviews and more, were with you every step of the way.
Forwarded from Navid Alizadeh Vgaslou
دانلود سورس نرم افزار تشخیص اثر انگشت به زبان برنامه نویسی متلب
https://t.me/Matlab_MathWorks
شناسایی افراد با کمک داده های فیزیولوژیکی و رفتاری، اصلاحاً بیومتریک نامیده می شود.اسکن اثر انگشت عمومی ترین روش از روش های شناسایی بیومتریک حال حاضر می باشد. این روش در تعیین هویت از دقت ۱۰۰٪ برخوردار بوده و حتی در دوقلوهای یکسان (تکتخمکی) نیز اثر انگشت متفاوت است. بهگونهای که امکان شباهت اثر انگشت دو نفر انسان، یک در شصت و چهار میلیارد میباشد.Matlab | برنامه نویسی متلب
https://t.me/Matlab_MathWorks
Forwarded from Navid Alizadeh Vgaslou
Fingerprint recognition.zip
1.1 MB
دانلود سورس نرم افزار تشخیص اثر انگشت به زبان برنامه نویسی متلب
Matlab | برنامه نویسی متلب
https://t.me/Matlab_MathWorks
Matlab | برنامه نویسی متلب
https://t.me/Matlab_MathWorks
This media is not supported in your browser
VIEW IN TELEGRAM
1. نصب سخت افزاری اینترنت ماهواره ای استارلینک
چقدم همه چیش وصله به هم
هیچ کاری لازم نیس بکنه ادم
قسمت های بعدی این ویدیو رو ب زودی میزاریم کانال باما همراه باشید
@raspberry_python
چقدم همه چیش وصله به هم
هیچ کاری لازم نیس بکنه ادم
قسمت های بعدی این ویدیو رو ب زودی میزاریم کانال باما همراه باشید
@raspberry_python
PayPal Carding Method 2021 : 100% WORKING
https://allcoursefree.com/2021/07/31/paypal-carding-method-2021-100-working/
📌 @raspberry_python
https://allcoursefree.com/2021/07/31/paypal-carding-method-2021-100-working/
📌 @raspberry_python
Free Udemy Courses – August 01 – PART 01
https://allcoursefree.com/2021/08/01/free-udemy-courses-august-01-part-01/
📌 @raspberry_python
https://allcoursefree.com/2021/08/01/free-udemy-courses-august-01-part-01/
📌 @raspberry_python
https://www.udemy.com/course/learn-python-programming-a-step-by-step-course-to-beginners/?couponCode=PYTHON_JUL_FREE_3
📌 @raspberry_python
📌 @raspberry_python
Udemy
Learn to Code in Python 3: Programming beginner to advanced
Python3 programming made easy with exercises, challenges and lots of real life examples. Learn to code today!
This media is not supported in your browser
VIEW IN TELEGRAM
قسمت دوم نصب اپلیکیشن استارلینک
هم توی گوگل پلی هست هم توی اپ استور
زاویه ماهواره هم خودش تنظیم میشه
قشنگ هیچ کار نمیخواد بکنه ادم 😂😂
برای قسمت های بعدی با ما همراه باشید
@raspberry_python
هم توی گوگل پلی هست هم توی اپ استور
زاویه ماهواره هم خودش تنظیم میشه
قشنگ هیچ کار نمیخواد بکنه ادم 😂😂
برای قسمت های بعدی با ما همراه باشید
@raspberry_python
تفاوت Encoding و Encrypting و Hashing در برنامه نویسی:
✏️ نویسنده : @theinternetgod
Encoding:
صرفا تبدیل یه داده به استاندارد متفاوت هست، مثلا base64 انکدینگ هست یا اصلا هر تبدیل مبنایی رو میشه انکودینگ در نظر گرفت و معمولا هدف انکود کردن مخفی سازی نیست (چون به راحتی قابل برگشت و یا همون دیکود کردنه ) و بیشتر جهت اینه که داده هامون رو متناسب با شرایطمون کنیم ؛ برای مثال base64 برا این وجود داره که داده های درون یه فیلم یا عکس هنگام عبور از شبکه توسط مودم ها و روتر ها به عنوان یه دستور شناسایی نشه (که یا ممکنه یه کار غیر منتظره انجام بده و یا دیتامون خراب شه).
Encripting & Hashing:
انکریپت کردن معمولا به هدف مخفی کردن یه داده به کار میره و ممکنه برگشت پذیر و یا یکطرفه باشه(هش). اگه قابل دیکریپت کردن باشه معمولا پای یک یا چند "کلید" در انکریپت و دیکریپت در میونه.
در غیر این صورت اگه برگشت ناپذیر باشه بهشون هش میگن، هش ها تضمین میکنن که هر داده ای رو به یک خروجی یکتا تبدیل کنن که فقط مختص اون ورودیه (مقدار هش ها یونیک هست) و از طرفی نمیشه با نگاه کردن بهش هیچ اظهار نظری درمورد ورودی کرد، در نتیجه میشه بدون ذخیره کردن خود داده برابر بودنش رو با دیگر داده ها چک کرد.
نمونه هایی از encoding های معروف :
UTF-8 , ASCII , Base64, Latin-1
نمونه هایی از Encription های معروف :
RSA , AES, Caesar Cipher
نمونه هایی از Hash های معروف :
SHA256, SHA512, MD5
✏️ نویسنده : @theinternetgod
Encoding:
صرفا تبدیل یه داده به استاندارد متفاوت هست، مثلا base64 انکدینگ هست یا اصلا هر تبدیل مبنایی رو میشه انکودینگ در نظر گرفت و معمولا هدف انکود کردن مخفی سازی نیست (چون به راحتی قابل برگشت و یا همون دیکود کردنه ) و بیشتر جهت اینه که داده هامون رو متناسب با شرایطمون کنیم ؛ برای مثال base64 برا این وجود داره که داده های درون یه فیلم یا عکس هنگام عبور از شبکه توسط مودم ها و روتر ها به عنوان یه دستور شناسایی نشه (که یا ممکنه یه کار غیر منتظره انجام بده و یا دیتامون خراب شه).
Encripting & Hashing:
انکریپت کردن معمولا به هدف مخفی کردن یه داده به کار میره و ممکنه برگشت پذیر و یا یکطرفه باشه(هش). اگه قابل دیکریپت کردن باشه معمولا پای یک یا چند "کلید" در انکریپت و دیکریپت در میونه.
در غیر این صورت اگه برگشت ناپذیر باشه بهشون هش میگن، هش ها تضمین میکنن که هر داده ای رو به یک خروجی یکتا تبدیل کنن که فقط مختص اون ورودیه (مقدار هش ها یونیک هست) و از طرفی نمیشه با نگاه کردن بهش هیچ اظهار نظری درمورد ورودی کرد، در نتیجه میشه بدون ذخیره کردن خود داده برابر بودنش رو با دیگر داده ها چک کرد.
نمونه هایی از encoding های معروف :
UTF-8 , ASCII , Base64, Latin-1
نمونه هایی از Encription های معروف :
RSA , AES, Caesar Cipher
نمونه هایی از Hash های معروف :
SHA256, SHA512, MD5
با توجه به کد بالا گزینه صحیح را از لیست زیر انتخاب کنید.😎
@raspberry_python
@raspberry_python
حاصل خروجی بالا را حدس بزنید
Final Results
4%
0 2 4 6
13%
[0,1,2,3,4,5,6,7,8,9]
8%
8
9%
[ ]
25%
واضحه که Syntaxerrors برمیگردونه 😏
11%
[2,4,6,8]
22%
نمیدونم🤔
8%
[0,2,4,6,8]
🤖 ربات مدیریت گروه پایتون 🐍
www.github.com/amiralirj/DarkHelper
• بن و انبن و میوت و ...
• قفل اسپم و nfsw
• قفل سرویس ، عکس ، وویس ، استیکر و ...
• زد تبچی و زد لینک
• پنل شیشه ای
• نوشته شده با کتابخانه pyrogram
• sqlite , matplotlib , threading ...
• oop
ارسالی یکی از ممبرها:@amiralirj_pv
@raspberry_python
www.github.com/amiralirj/DarkHelper
• بن و انبن و میوت و ...
• قفل اسپم و nfsw
• قفل سرویس ، عکس ، وویس ، استیکر و ...
• زد تبچی و زد لینک
• پنل شیشه ای
• نوشته شده با کتابخانه pyrogram
• sqlite , matplotlib , threading ...
• oop
ارسالی یکی از ممبرها:@amiralirj_pv
@raspberry_python
🐍 Python & Raspberry 🐍
با توجه به کد بالا گزینه صحیح را از لیست زیر انتخاب کنید.😎 @raspberry_python
خب بریم سراغ جواب این سوال🤓
در مرحله اول ما با یه
خب داخل list comp ما اومدیم از حلقه for و condition ها و logical operator و BitWiseOperatorها استفاده کردیم . بریم ببینیم که عبارت داخل list comp چجوری محاسبه میشه🚗🚗
در ابتدا ما اومدیم یه range مشخصی از اعداد رو در نظر گرفتیم . رینج مورد نظر ما از 0 تا 10 هستش. حتما میدونید که تابع range سه تا پارامتر میگیره:
در قسمت
حاصل عبارت بالا Fasleست . چراا ؟؟ چرا
در مرحله اول ما با یه
list comperasion
رو به رو هستیم :[x for x in range(10) if not (x& 7 and x &1 and 0<x>x-1)]عبارت بالا یه list comp هستش .این از list comperasionمون.
خب داخل list comp ما اومدیم از حلقه for و condition ها و logical operator و BitWiseOperatorها استفاده کردیم . بریم ببینیم که عبارت داخل list comp چجوری محاسبه میشه🚗🚗
در ابتدا ما اومدیم یه range مشخصی از اعداد رو در نظر گرفتیم . رینج مورد نظر ما از 0 تا 10 هستش. حتما میدونید که تابع range سه تا پارامتر میگیره:
range(start,stop,step)اولین پارامتر که startهست تعیین میکند که از چه عددی رینج ما شروع میشه وقتی براش مقداری در نظر نمیگیریم خودش به صورت دیفالت از 0 شروع میکنه . پارامتر بعدی stop هستش که مشخص میکنه که تا چه عددی ادامه پیدا میکنه . (نکته مهم:: رینج ما تا stop-1 هستش . یعنی تا خود stop پیش نمیره تا یکی مونده به stop ،عملیات پیمایش یا iteration را انجام میدهد .اگر میخواهیم شامل خود stop هم باشد به صورت stop+1 مینویسیم .) پارامتر بعدی step هستش . که گام های پیمایش یا
iteration
را مشخص میکند . هنگامی که مقداری برای step در نظر گرفته نمیشود پایتون به صورت دیفالت مقدار1 را در نظر میگیرد. در این مثال منظور از :x for x in range(10)این است که میخواهیم بر روی اعداد از
0(start=0)
تا 10 (stop=10)
(یعنی 0.....9) پیمایش کنیم . پس مقادیر x ما شامل0 تا 9 می باشد . این از کارکرد حلقه for. بریم سراغ if:در قسمت
condition
ما عبارت زیر را نوشتیم :if not (x &7 and x&1 and 0<x>x-1)خب اول بریم سراغ عبارت های داخل پرانتر. داخل پرانتز ما داریم :
x & 7 and x&1 and 0<x>x-1میدانیم
&
عملگر BitWise
و and عملگر logical
هستش . خب در x &7
در ابتدا باید ما هم x و هم 7 را به مقادیر باینری یعنی 0 و 1 تبدیل کنیم و با یک دیگر & کنیم . یعنی به چه صورت؟؟ در مرحله اول x ما مقدارش 0 است درسته؟؟ خب باینری0 به صورت:000000هستش . باینری 7 به صورت :
000111میتونید از متد
bin()
برای به دست آوردن مقدار باینری عدد استفاده کنید. وقتی که به bin
عدد 7 رو پاس بدید نتیجه ای که بهتون برمیگردونه به صورت0b111
هستش یعنی مقدار باینری عدد رو بهتون برمیگردونه. خب حالا اگه از متد bin
استفاده نکردید و به صورت دستی به دست آوردید برای اینکه از مقدار باینری مورد نظر مطمئن بشید میتونید از int()
استفاده کنید و مقدار باینری عدد رو به صورت string
بهش پاس بدید و بگید که در مبنای 2 بهتون برگردونه .یعنی به صورت:int('0b111',2)——->7حالا وقتی که مقدار باینری
x
در حلقه for
و 7 رو به دست آوردید ، کافیه با هم & کنید . میدونیم که در & زمانی مقدار1 میشه که هر دوbitما 1 باشه در غیر این صورت 0 میشه.الان در :0 —-> 00000مقدار & شده ی 0 و 7 برابر با 0 میشه . و در نتیجه حاصل x&7 برابر با false میشود . خب این از حاصل x&7 . برای x&1 نیز همین کار رو انجام میدیم . یعنی :
&
7 —-> 00111
———————-
00000
0—->0000خب حاصل
&
1—-->0001
——————----
0000
0&1
نیز برابر با False
شد. تا اینجای کار داریم: fasle and false and 0<x>x-1خب در :
0<x>x-1مقدار اولیه xما 0 هستش پس داریم:
0<0>-1
حاصل عبارت بالا Fasleست . چراا ؟؟ چرا
syntax error
نداد ؟. این عبارت کاملا از نظر Comparison Operators
کاملا درسته به خاطر اینکه 0 از خودش بزرگتر نیست و از -1 نیز بزرگتر است و حاصل عبارت False است است .چند نمونه مثال دیگه:7<9>8 ——>Trueخب تا این جا حاصل عبارت داخل پرانتز می شود:
9<10>15——->False
8<=14>=14——>True
False and False and Falseمیدانیم که حاصل عبارتی که داخلش
and
است زمانی برابر با true
میشود که شرط هایی که اطرافش نوشته شده اند همه true باشند . خب پس با در نظر گرفتن این نکته حاصل :False and False and Falseبه خاطر وجود
False
برابر با False
میشود . در نتیجه مقدار عبارت داخل پرانتز کلا False میشود . خب الان داریم:if not (False)میدانیم
not False
میشود True پس چون شرط True
شد پایتون به داخل بدنه ی if میرود و statement مورد نظر را محاسبه میکند . statement
مورد نظر مقدار x است . که داخل لیست قرار میگیرد. پس اولین عضوی که داخل list comp
ما ذخیره میشود عدد 0 است . پس الان لیستی به صورت: [0] داریم . برای x با مقدار 1 نیز راه بالا را پیش میگیریم . (فقط یه نمونه & با 7 رو براتون مینویسم) & عدد 1 با 7 میشه 1 پس حاصل 7&1 میشه True.)1——>00001مقداری که در پرانتز به دست می آید
&
7——->00111
———————-
00001
True
است و not True
میشود False
پس قسمت if اجرا نمیشود . (برای x با مقادیر فرد شرط برقرار نیست ) فقط برای x با مقادیر زوج شرط برقرار است پس جواب نهایی میشود:[0,2,4,6,8]
@raspberry_python