آموزش نمایش تعداد اعداد زوج یا فرد در یک مجموعه اعداد
-
- پایتون ۳
- سعید فضل اله زاده
- 0 نظر
- 14,258 بازدید
فرض کنید که ما مجموعهای از اعداد غیرترتیبی و تصادفی داریم که میخواهیم ببینیم چه تعداد از آنها زوج و چه تعداد فرد هستند. مجموعه زیر را فرض کنید:
حالا میخواهیم با استفاده از پایتون ببینیم چه تعداد از آنها عدد زوج هستند و چه تعداد فرد.
در این آموزش از اپراتور % یا باقیمانده استفاده میکنیم که در مطلب انواع اپراتور یا عملگر میتوانید توضیحات بیشتر در خصوص اپراتورهای پایتون را مطالعه کنید.
برای این که ببینیم عدد زوج هست یا خیر باید چک کنیم که باقیمانده تقسیم صفر هست یا یک. اگر صفر بود به معنای زوج بودن عدد و اگر هم یک بود به معنای فرد بودن هست.
همچنین برای محاسبه تعداد اعداد زوج و فرد نیز لازم داریم تا دو متغیر تعریف کنیم و در یک حلقه بازگشتی یا recursive loop از آن استفاده میکنیم.
حالا با استفاده از یک حلقه for باید تعداد را به این صورت مشخص کنیم:
ابتدا چک میکنیم که عدد زوج هست یا خیر و در هر بار تکرار حلقه نیز به متغیر مربوطه یک مقدار اضافه میشود تا تعداد اعداد را در خودش ذخیره کند.
پس تا به این جای کار کد ما به این صورت شد:
numbers = [1, 4, 6, 9, 10, 1, 2, 12, 19, 21, 13, 17]
even_numbers = 0
odd_numbers = 0
for n in numbers:
if n % 2 == 0:
even_numbers += 1
elif n % 2 != 0:
odd_numbers += 1
حالا برای نمایش تعداد باید از تابع print کمک بگیریم تا تعداد را نمایش دهیم، اما این تابع را کجا باید بنویسیم؟ در داخل شرط ها؟ در داخل حلقه و بیرون شرط؟ یا در بیرون حلقه؟ هر سه مورد را با هم تست میکنیم و خروجیها را با هم میبینیم.
تابع print داخل شرط:
numbers = [1, 4, 6, 9, 10, 1, 2, 12, 19, 21, 13, 17]
even_numbers = 0
odd_numbers = 0
for n in numbers:
if n % 2 == 0:
even_numbers += 1
print(f"there are {even_numbers} even numbers")
elif n % 2 != 0:
odd_numbers += 1
print(f"there are {odd_numbers} odd numbers")
خروجی:
there are 1 odd numbers
there are 1 even numbers
there are 2 even numbers
there are 2 odd numbers
there are 3 even numbers
there are 3 odd numbers
there are 4 even numbers
there are 5 even numbers
there are 4 odd numbers
there are 5 odd numbers
there are 6 odd numbers
there are 7 odd numbers
بیشتر
همانطور که میبینید در هر بار تکرار حلقه یک بار تابع print اجرا میشود و طبیعتا به تعداد اعدادی که داریم این تابع را مشاهده میکنیم که این مطلوب ما نیست چرا که اعداد ما تصادفی هستند و این که از این خروجی باید غیر از خط آخر که برای مثال ما اعداد فرد هستند، بگردیم آخرین خطی که اعداد زوج را شمرده پیدا کنیم که کار ما را سخت میکند. این شیوه برای زمانی مناسب هست که بخواهیم تک به تک اعداد را در خروجی بررسی کنیم که چه عددی بررسی شده و کدام زوج بوده و کدام فرد.
تابع print داخل حلقه و بیرون شرط:
numbers = [1, 4, 6, 9, 10, 1, 2, 12, 19, 21, 13, 17]
even_numbers = 0
odd_numbers = 0
for n in numbers:
if n % 2 == 0:
even_numbers += 1
elif n % 2 != 0:
odd_numbers += 1
print(f"there are {even_numbers} even numbers")
print(f"there are {odd_numbers} odd numbers")
خروجی:
there are 0 even numbers
there are 1 odd numbers
there are 1 even numbers
there are 1 odd numbers
there are 2 even numbers
there are 1 odd numbers
there are 2 even numbers
there are 2 odd numbers
there are 3 even numbers
there are 2 odd numbers
there are 3 even numbers
there are 3 odd numbers
there are 4 even numbers
there are 3 odd numbers
there are 5 even numbers
there are 3 odd numbers
there are 5 even numbers
there are 4 odd numbers
there are 5 even numbers
there are 5 odd numbers
there are 5 even numbers
there are 6 odd numbers
there are 5 even numbers
there are 7 odd numbers
بیشتر
این روش نسبت به بالا مزیتی که دارد در دو خط آخر میتوانیم متوجه شویم چه تعداد عدد زوج و فرد داریم اما ۲۴ مرتبه این تابع را در خروجی میبینیم. عجیب است، نه؟ علت این هست که به ازای هر بار تکرار حلقه، هر دو تابع print خروجی میدهند که مثلا در عدد اول تعداد اعداد زوج برابر با ۰ بوده و فرد برابر با ۱ که این دو خط مربوط به محاسبه عدد ایندکس شماره ۰ یعنی عدد ۱ هست. عدد بعدی یعنی ۴ هم دو مرتبه چک میشود و الی آخر. این شیوه به نظرم برای زمانی مناسب هست که علاوه بر این که به ازای هر عدد چک میکنیم عدد زوج بوده یا فرد، مشخص میکنیم که تا آن عدد چند تا عدد زوج یا فرد پیدا شده که البته با مورد قبلی یعنی تابع print داخل شرط به نوعی همپوشانی دارد.
تابع print در بیرون حلقه:
numbers = [1, 4, 6, 9, 10, 1, 2, 12, 19, 21, 13, 17]
even_numbers = 0
odd_numbers = 0
for n in numbers:
if n % 2 == 0:
even_numbers += 1
elif n % 2 != 0:
odd_numbers += 1
print(f"there are {even_numbers} even numbers")
print(f"there are {odd_numbers} odd numbers")
خروجی:
این شیوه تنها دو خط خروجی دارد که مطلوب ماست و زمانی که کار حلقه به پایان رسید این دو خط اجرا میشوند.
- مشخص کردن تعداد اعداد زوج در پایتون
- مشخص کردن تعداد اعداد فرد در پایتون
- find odd numbers in python
- find even numbers in python