מחברת 2- מחשבון מס הכנסה

היי, אשמח להבהרה לגבי התרגיל הזה-
האם בפתרון התרגיל עליי להניח כי הנתונים יהיו קבועים גם בעתיד? או שעליי ליצור קוד שיתאים גם במקרה בו הנתונים ישתנו (כלומר, מדרגות המס או המיסוי עליהם ישתנה)?

ושוב תודה רבה! עד כה ההסברים מ-ו-ש-ל-מ-י-ם! :slight_smile:

היי,

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

בכללי חשוב לדעתי לנסות לחשוב על מה הבעיה שאנו פותרים והאם יש השפעות על המשתנים או התוכן שלה כמו כאן. השפעה חיצונית של גוף ממשלתי במקרה הזה וההבנה שיכולים לחול שינויים במיסוי.

מקווה שעזרתי.
בהצלחה :slight_smile:

מיכאל

לייק 1

ועוד שאלה:
מי שמרווח פחות 6310 ש"ח (שכר המינימום בתרגיל) משלם 10% מהמשכורת שהוא מרווח, כן?
ז"א 630 ש"ח (10% מ-6310) הוא לא מס קבוע ללא קשר אם השכר נמוך מ- 6310

תודה לעונים :slight_smile:

הוא ישלם 10% מהשכר שהוא מרוויח ולא 10% מגובה המדרגה.
משמע, אם הוא מרוויח 5000 שח הוא ישלם 5000*0.1=500

אני מתקשה בפתרון התרגיל, אחרי מעט מאמץ הבנתי את העניין עם המדרגות ויצרתי מערכת של if elif ו else,
נעזרתי ברעיון שנכתב כאן, להתחיל מהמדרגות הגבוהות ולרדת עד לראשונה.
אבל עדיין משהו לא רץ, בגלל שהתוכנית יחסית ארוכה, אני לא מבין איך תוכלו לעזור לי להגיע לפתרון אם לא אשתף את הקוד שכתבתי, איך נדע מה שגוי? אני לא רוצה לראות פתרון סופי מול העיניים אבל יש כאן בעייתיות…

אם הקוד לא רץ עדיין, אני חושב שאתה יכול לפרסם אותו כי זה לא התשובה.
זה יעזור להרבה אנשים לעזור לך
בנימה כללית:
לא לשכוח סוגריים בכל החישובים
לא לשכוח נקודיים אחרי if else וכו’
שים לב שבין <= ל=< יש תוצאות אחרות או שגיאות
צריך להיות לעבור שורה שורה ולראות תקלות

אפשר לשלוח לך? אולי תבין איפה התקלה

ביקשו לא לפרסם תשובות…
אתה יכול לשלוח פה ואנשים יעזרו לך להבין איפה הטעות. זו המטרה של הפורום

אוקי, זה מה שכתבתי בנתיים

sallary = int(input ("insert your current sallary to calculate the tax "))
if sallary >= 54130:
step7 = sallary - 54130
tax1 = step7 * 0.5
taxtotal = tax1 + ((54130-42030) * 0.47) + ((42030-20200) * 0.35) + ((20200-14530) * 0.31) + ((14530 - 9050) * 0.2) + ((9050-6310) * 0.14) + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
elif sallary >= 42030:
step6 = sallary - 42030
tax1 = step6 * 0.47
taxtotal = tax1 + ((42030-20200) * 0.35) + ((20200-14530) * 0.31) + ((14530 - 9050) * 0.2) + ((9050-6310) * 0.14) + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
elif sallary >= 20200:
step5 = sallary - 20200
tax1 = step5 * 0.35
taxtotal = tax1 + ((20200-14530) * 0.31) + ((14530 - 9050) * 0.2) + ((9050-6310) * 0.14) + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
elif sallary >= 14530:
step4 = sallary - 14530
tax1 = step4 * 0.31
taxtotal = tax1 + ((14530 - 9050) * 0.2) + ((9050-6310) * 0.14) + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
elif sallary >= 9050:
step3 = sallary - 9050
tax1 = step3 * 0.2
taxtotal = ((9050-6310) * 0.14) + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
elif sallary >= 6310:
step2 = sallary - 6310
tax1 = step2 * 0.14
taxtotal = tax1 + (6310 * 0.1)
print ("your tax to pay is: " + taxtotal)
else :
taxtotal = (sallary) * (0.1)

print ("your tax to pay is: " + taxtotal)

וזו מבין התקלות שעולות

TypeError Traceback (most recent call last)
in
29 tax1 = step2*0.14
30 taxtotal = tax1 + (6310 * 0.1)
—> 31 print ("your tax to pay is: " + taxtotal)
32 else :
33 taxtotal = (sallary) * (0.1)

TypeError: can only concatenate str (not “float”) to str

לא התעמקתי בכל הפקדות התניות שכתבת אבל…
אי אפשר להדפיס מחרוזת ואינטג’ר ביחד.
תגדיר את המשתנה taxtotal עם str לפני הפקודת הדפסה --> (taxtotal = str(taxtotal

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

בפתרון שלי הפכתי את כל מדרגות המס ומדרגות השכר למשתנים.
זה מאוד אקל עלי לכתוב את הקוד.

אתה צודק יאיר, תודה ואימימוני, אחרי כל מיני החלפות התברר לי שצדקת.
תודה לכל מי שעוזר!

עכשיו יש לי בעיה חדשה, לא שהיא קריטית, פייתון מוציא כפלט את המס פעמיים
דוגמא -
your tax to pay is: 4990130.8
your tax to pay is: 4990130.8

למה זה קורה?

אנלא מצליחה לפתוח על זה נושא, אבל אשמח לעזרה עם השאלה על המחשבון של המס הכנסה.

כי כתבת בסוף כל תנאי שזה ידפיס את התוצאה, וגם בסוף הקוד כתבת שזה ידפיס את התוצאה.

היי,
אם המשכורת היא 9050 זה כלול במדרגת מס השנייה או שזה עד ולא כולל?
כמו כן, בהוראה האחרונה כתוב 50 אחוז מסכום זה האם הכוונה לכול המשכורת או באותה צורה כמו כול התרגיל ( מהסכום שנותר מחיסור בין המשכורת לרף המדרגה האחרונה)

אשמח לקבל עזרה מאחד המדריכים בנוגע לשאלה זו
תודנ רבה!

לפי מה שהבנתי אם המשכורת היא 9050 אז המס כולל את הדרוג השני אבל לא את הדירוג השלישי, אז צריך לנתח 2 חלקים של המשכורת עם 2 אחוזי ניקוי שונים. בהוראה האחרונה הרעיון זהה, אם המשכורת עוברת את הסכום של הדירוג אז צריך להוסיף נתח מהמשכורת שממנו אתה מחשב מס של 50 אחוז

לייק 1

אני מבין את מה שאמרת, אבל מה הגישה לפתרון? להוסיף תנאי חיצוני של הדפסה? או פקודת הדפסה אחת בסוף הקוד?

כבר יש לך פקודת הדפסה אחת בסוף הקוד.
אני לא כל כך יודעת למה אתה מתכוון ב"תנאי חיצוני של הדפסה", אבל שורת ההדפסה בסוף הקוד שלך בעצצם אומרת, "לא משנה איזה תנאי הקוד מימש, תדפיס לי את המשתנה taxtotal.
ולכן אין סיבה שבתוך כל תנאי המשתנה הזה יודפס.

לייק 1