4 תשובות
רשימה ואז עושה סכום רשימה
lst = [1,2,3]z
אל תתיחסי לz
ואז את עושה print(sum(lst)z
וגם כאן אל תתיחסי לz
וזהו
שואל השאלה:
ועוד שאלה איך אני מפרידה בין הספרות לדוגמה
קלט:123
פלט:1
2
3
אנונימית
זה מה שחשוב לדעת:
מודולו 10 מקבלים ספרת היחידות
חלקי 10, נפטרים מספרת היחידות, ואז מודלו 10 מקבלים את ספרת היחידות החדשה (שהיא למעשה ספרת העשרות במספר המקורי)
וחוזר חלילה
(עדכון: "משתובב" הקדים אותי בכמה דקות. אין כאן אפשרות למחוק תשובות, אז אשאיר את שלי.)

את מדברת על קלט. האם מצפים ממך לאחסן, ולעשות את הפעולות האלה, על נתון שהוא מחרוזת ("123") או נתון שהוא מספר אמיתי (123)?

נניח שזה מספר אמיתי.

השיטה הקלאסית לפירוק מספר לספרות היא לעשות לולאה: לקחת רק את ספרת האחדות (האופרטור %), להדפיס אותה (או להכניס אותה לרשימה, או לעשות בה כל דבר אחר שאנו רוצים לעשות בה), ואז לחלק את המספר בעשר (האופרטור //) כדי להשליך את ספרת האחדות. ולהמשיך בלולאה כל עוד המספר שלנו אינו אפס.

במלים:

1. קלוט מספר למשתנה a.
2. אתחל את המשתנה "סכום" לאפס.
3. כל עוד המשתנה a שונה מאפס:
3.1. קח את ספרת האחדות שלו, והוסף אותה למשתנה "סכום".
3.2. חלק את a בעשר. (הערה: חילוק מסוג שלם. כשאנו מחלקים 123 לעשר אנו רוצים תוצאה 12, לא 12.3).
4. הדפס (או החזר) את המשתנה "סכום".

ה"בעיה" עם פייתון היא, שיש בה כלים למתכנתים "מקצועיים", כלים שמאפשרים לעשות דברים בקלות רבה (ובכיף). למשל, אפשר להדפיס את סכום הספרות של המספר a כך: print(sum(map(int,str(a))))z. בלי לולאות ובלי מתמטיקה. גם השימוש בפונקציה sum, שהציעו מעליי, הוא כלי. הכלים האלה עלולים לגרום לך להתעצל ולא ללמוד את האלגוריתמים.