Упражнение: Проверки: задача 8: Стипендии
Здравейте!
Зациклих на задача 8. Стипендии и ще съм много благодарен, ако ме насочите къде бъркам:
#1.Input # 1. Доход в лева - реално число; # 2. Среден успех - реално числсо; # 3. Минимална работна заплата – реално число. income=float(input()) avgRes=float(input()) minSal=float(input()) #2. CAlculate social scholarship = 35% от минималната работна заплата. socialScholar=minSal*0.35 #3. Calculate scolar scholaship = - успехът на ученика, умножен по коефициент 25. scolarSchol=avgRes*25 #4: Check condition for which scolarship student will be receive: getScolSchol = 'N' getSocialScholar = 'N' # Изискване за стипендия за отличен успех - успех над 5.5, включително. if avgRes>5.5: getScolSchol='Y' # Изискване за социална стипендия - доход на член от семейството по-малък от минималната работна заплата и успех над 4.5. elif income<minSal and avgRes>=4.5: getSocialScholar='Y' # • Ако ученикът има право да получава само социална стипендия: if getSocialScholar=='Y' and getScolSchol!='Y': print(f"You get a Social scholarship {socialScholar:0.2f} BGN") elif getSocialScholar!='Y' and getScolSchol=='Y': print(f"You get a scholarship for excellent results {scolarSchol:0.2f} BGN") # • Ако ученикът има право да получава само стипендия за отличен успех: # "You get a scholarship for excellent results {стойност на стипендията} BGN" # elif (getSocialScholar=='Y' and getScolSchol=='Y') and (scolarSchol<socialScholar): # print(f"You get a Social scholarship {socialScholar:0.2f} BGN") # elif (getSocialScholar=='Y' and getScolSchol=='Y') and (scolarSchol>socialScholar): # print(f"You get a scholarship for excellent results {scolarSchol:0.2f} BGN") # elif getSocialScholar=='Y' and getScolSchol=='Y': if scolarSchol>=socialScholar: print(f"You get a scholarship for excellent results {scolarSchol:0.2f} BGN") else: print(f"You get a Social scholarship {socialScholar:0.2f} BGN") else: print("You cannot get a scholarship!")
Благодаря!
Само не можах да разбера каква е разликата между:
И:
Защо ако ползвам elif не се получава...
Поздрави,
Микто
@deltanov
Когато се използва if-elif-...-else конструкция, ще бъде изпълнен кода само за първата валидна проверка (останалите директно се пропускат, дори да има валидни и сред тях).
Конкретно по задачата, ако студентът има успех над 5.5, ще се изпълни само кодът в if-a, т.е. getScolSchol='Y', дори и приходите на студента да са под минималните (при което трябва да се сетне и getSocialScholar='Y').
Тъкмо написах коментара и се сетих:): Всъщност с ELIF конструкцията не позволявам едновременно да може да получи социялна и отличен успех стипендия.
Отново благодаря за помощта.