الفرق بين إستخدام if بشكل متتالي وحدها وإستخدام elif معها في بايثون

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته




الفرق بين إستخدام if بشكل متتالي وحدها وإستخدام elif معها في بايثون .

 

1-أولا بشكل سريع جدا بعض الشرح عن if .


تستخدم if في كل لغات البرمجة لتنفيذ سطر أكواد أو أكثر لكن في حال تحقق شرط محدد بمعنى اخر لنفترض انك تقول لأخوك الصغير عندما يأتي صديقي حارث أيقظني من النوم

عمل if شيء كهذا لن تنفذ الأكواد التابعة لها إلا في حال تحقق الشرط ,في بايثون الأكواد التابعة لها تكون في السطر الذي تحتها  ويكون هذا السطر متقدم على سطر if بمسافات فارغة من خلال الضغط على مفتاح Tab في لوحة المفاتيح عدد المسافات الفارغة يحدده إعدادات محرر النصوص المستخدم لكن غالبا يكون أربع مسافات فارغة.





نلاحظ تحقق الشرط وتم تنفيذ سطر الكود التابع له الذي معنا الأن هو طباعة رقم عشرة ملاحظة ممكن أن يكون أكثر من سطر.



لم يتحقق الشرط لن يتم تنفيذ سطر الكود الخاص ب if .





2-الأن الفرق بين إستخدام if لوحدها وإستخدام elif معها نتابع بالصور .




في حال إستخدام if عدت مرات بشكل متتالي سيتم التحقق من كل الشروط والتعامل معها .



في حال إستخدام elif بعد if  سيتم تنفيذ أول شرط يتحقق مهما كان ترتيبه وتجاهل الباقين .



مثال من الحياة العادية لتتوضح الأمور :

لنفترض انك طلبت من أخوك الذهاب إلى الدكان لشراء بعض الأشياء وقلت له إذا وجدت عصير البرتقال إشتري منه وإذا وجدت عصير الجزر إشتري منه وإذا وجدت عصير التفاح إشتري منه و...إلخ هذا يمثل إستخدام if بشكل متتالي .

لنفترض طلبت منه مرة أخرى الذهاب إلى الدكان وقلت له إذا وجدت عصير البرتقال أشتري منه وإرجع للمنزل إذا لم تجده ووجدت عصير التفاح إشتري منه وإرجع للمنزل وهكذا ...إلخ هذا يمثل elif مع if .


الأن سؤال هل الأفضل إستخدام if بشكل متتالي أو إستخدام elif معها؟

الجواب لايوجد أفضل يوجد ماذا أحتاج انا .

-في حال أردنا أن ننفذ شرط واحد يتحقق وتجاهل الباقين نستخدام elif مثال في الأسفل ساتحقق من وجود بعض مديري الحزم في توزيعات لينكس ثم طبع إسم التوزيعة بناءا على وجود مدر الحزم من عدمه وهنا احتاج تحقق شرط واحد فقط وتجاهل الباقين لهذا سأستخدم elif.


كما نعلم أنا فيدورا فيها مدير الحزم القديم yum ومدير الحزم الجديد اما ريدهات فيها فقط yum هنا وضعت شرط داخل شرط, أولا شرط إذا كان yum موجود يتم النزول على بلوك الكود وهناك يوجد شرط ثاني أي شرط داخل شرط إذا كان dnf موجود إطبع Fedora اما غير ذلك (else) إطبع Redhat وهكذا ممكن وضع شرط داخل شرط وليس بالضرورة شرطين ممكن أكثر كما في الصورة في الأسفل .



قد تجد الامر معقد لكن تابع الكود سطر سطر وتابع ما هي الشروط التي تتحقق ستفهم ماذا يحصل ملاحظة os.uname().machine ترجع نص إذا كان هذا النص كلمة x86_64 يكون النظام 64bit غير ذالك يكون شيء أخر مثلا 32bit او ARM وكل معمارية لها نص لكن هنا حتى لا اعقد الامور أكثر إعتبرت أنه إذا لم يكن x86_64 سيكون 32bit .




-الأن مثال عن إستخدام if وحدها بشكل متتالي لنفترض أريد التأكد من وجود مجلدين وإذا لم يكونو موجودين يعني إذا تحقق الشرط ان المجلد الفولاني غير موجود ينفذ الكود التابع ل if لإنشاء مجلد من خلال os.mkdir في هذا المثال أريد التأكد من وجود المجلدين لهذا لا مجال لإستخدام elif .


الكود كأنني أقول إذا لم يكن هناك مجلد بهذا الإسم والمسار نفذ os.mkdir أي قم بإنشاء مجلد بهذا الإسم والمسار لو إستخدمنا elif مع if سيتم تنفيذ أول شرط ثم يتوقف أي سيتم إنشاء أول مجلد فقط الذي هو myfolder1111.





شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)