והפעם ש

hopipe

New member
סימון לולאה

אני לא ראיתי אי פעם שמישהו סימן סיום לולאה בpython,
אם זה רק למטרת לימוד אפשר להוסיף הערה אבל הייתי מוריד אותה אחרי השיעורים הראשונים שהתלמיד לא יתחיל להכניס את זה לכל לולאה שהוא כותב
 

bismark1

New member
לא ככה

בפייתון אינדנטציה שבורה == קוד שבור, או שהאינטרפרטר יצעק או שיהיה לך באג. יש תקן לשפה PEP-8 שמגדיר בדיוק איך הקוד צריך להראות ורוב העורכים יודעים לעבוד איתו, מומלץ להצמד אליו.
בכל מקרה, אל תלמד לדחוף הערה בסוף כל בלוק, שאר המתכנתים בגן יצחקו עליו.
 

יבגניי34

New member
וכתוצאה מפתחים בילו שעות בוויכוחים איפה לשים אותם ״סימונים״

שפות ״מודרניות״ כמו פייתון או go החליטו לשים קץ לבזבוז המשאבים האדיר הזה (שנקרא ״סככת אופניים״ באנגלית) בגישת ״הפורמט הוא הקוד״.
 

choo

Active member
בדיוק כמו שבפועל עושים בכל שפה אחרת

&nbsp
בכל שפה שתומכת בבלוקים, אנשים עדיין מבצעים אינדנטציה של הקוד שבתוך הבלוק, כדי שויזואלית יהיה קל לראות את הקינון. אחד מפרידים בין שני בלוקים? עם שורה ריקה. צריך להזיז את כל השוקות כשמכניסים לבלוק? גם בשפות אחרות עושים את זה בפועל, אחרת מקבלים קוד בלתי קריא.
&nbsp
כל מה שאמרו שפייתון הוא: אם ממילא אנשים עובדים קשה לדאוג לאינדנטציה של הקוד, אין טעם לדרוש מהם להשקיע גם בהוספת סימון סיום בלוק. זה מונע את הבעיה שמישהו דאג לאינדנטציה, אבל שכח את פקודות תחילת/סיום הבלוק. הוא "קורא" בעיניים שיש כאן בלוק, אבל הקומפיילר מצידו חושב שאין בלוק. בפייתון - הקוד יעבוד לפי איך שהוא נראה ויזואלית, ולכן תקלה כזו לא תתרחש. מאוד קל להתרגל לזה, אחרי שמתגברים על הנטיה להיצמד לדברים (הלאו-דווקא טובים) המוכרים.
 
דווקא בדוגמה שנתת...

דווקא בדוגמה שנתת, הקוד הראשון של שפת C מאוד מטעה: זה מתקמפל בלי בעיה, הסטייטמנט f1 יתבצע עם תלות בתנאי, והבא אחריו, f2, יתבצע תמיד.
אבל בעיניים אנושיות, שני הסטייטמנטס נראים כאילו הם אותו בלוק שמתבצע כתלות בתנאי..
בפייתון תהיה חייב לכתוב סטייטמנט עם אינדנטציה אחרי התנאי (גם pass נחשב לצורך זה). במובן הזה, תהיה לך שגיאת runtime (או ״קומפילציה״ ברמת ה IDE) אם תנסה לכתוב גם את התנאי וגם את f1 באותה אינדנטציה.
כלומר הקוד הבא יעיף שגיאת IndentationError:
קוד:
if foo:
f1()
f2()
 

choo

Active member
זה נראה כאילו אין לך נסיון של ממש בעולם האמיתי

&nbsp
כל אדם שלמד לתכנת בשפות אחרות, ונחשף לראשונה לפייתון, ישר אומר "אבל אם אין סימון ברור לסיום בלוק תהינה הרבה טעויות!". גם אני אמרתי את זה, כשלמדתי פייתון לראשונה.
&nbsp
בפועל, הנסיון מראה שמעבר לשבועות הראשונים, זה לא מייצר יותר באגים, מאשר הבאגים ההפוכים בשפות כמו סי, שבהן נדמה לך שהקוד מכונן כשהוא לא. והבאגים הללו בפייתון הרבה יותר קלים לתפיסה, מאשר הבאגים ההפוכים ב-C.
&nbsp
אתה פשוט בשלב השוק הראשוני כי "מישהו העז להזיז לך את הגבינה הקדושה" - היטב אני מכיר את התחושה הזו. במקרה הזה התחושה אינה מבוססת.
 

luis13

New member
אופנה?

אני די בטוח שאתה מתכת ותיק אבל סלח לי אתה נשמע כמו מישהו מתקופת הדינוזאורים.
&nbsp
פייתון היא לא אופנה חולפת. היא קיימת שנים רבות ויש תחומים מסוימים כמו DATA שהיא השפה השולטת בשוק.
&nbsp
אין שפת תכנות שיש בה רק יתרונות. שפה היא כלי לביצוע משימה. לי יש הרושם שאתה לא ממש מבין את זה ואתה כנראה מסוג האנשים שמשתמשים באותה שפה או טכנולוגיה להכל רק כי זה מה שאתה מכיר ונוח לך. אתה ממש נשמע כמו מישהו שמפחד להסתכל לקונספט חדש ולא מוכר.
&nbsp
אגב, מהתגובות שלך גם משתמע שאתה לא באמת עובד עם פייתון. אני עובד עם השפה שנים רבות וגם העובדים החדשים שיש אצלנו שמעולם לא נגעו בפייתון לא נופלים על בעיות הזחה. זה הכל שאלה של איך קינפגת את הסביבה שבה אתה עובד. סביר להניח שדילגת על השלב הזה וקפצת ישר לתכנת.
 

vinney

Well-known member
לא, אבל הכלי כן יעשה לך אינדנטציה אוטומטית

כשאתה כותב if בלה בלה ":" ולוחץ אנטר - תקבל שורה חדשה עם טאב פנימה. כל שורה תמשיך להיות מיושרת לבלוק עד שתחליט לעשות backspace.
&nbsp
אם זה לא עובד בעורך שלך - תחליף עורך, אבל כל עורך נורמלי אמור לתמוך בזה.
 

luis13

New member
בקיצור

השתמשת בסביבה לא מקונפגת טוב ומזה הסקת תאוריה שלמה על השפה.
&nbsp
אגב לולאות תכיר שבפייתון יש לך ELSE גם ללולאה וזה אחד הדברים השימושים.
 
למעלה