Loading...
deltanov avatar deltanov 5 Точки

Упражнение: Проверки: задача 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!")


 

 

Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4803 Точки
Best Answer

Има няколко пропуска в решението:

  • Отличен успех е оценка над 5.50:
    if avgRes>=5.5:
        getScolSchol='Y'
  • Получаването на социална стипендия е възможно дори и при отличен успех:
    elif income<minSal and avgRes>4.5:
        getSocialScholar='Y'
  • За социална стипендия се изисква успех над 4.50:
    if income<minSal and avgRes>4.5:
        getSocialScholar='Y'
  • Judge очаква  стойността на стипендиите да се изведе като цяло число, без дробната част (т.е. 145.99 трябва да се изпише като 145). Ето един вариант:
    print(f"You get a Social scholarship {socialScholar:0.2f} BGN")
    
    
    print(f"You get a Social scholarship {int(socialScholar)} BGN")
    
    
    print(f"You get a scholarship for excellent results {scolarSchol:0.2f} BGN")
    
    
    print(f"You get a scholarship for excellent results {int(scolarSchol)} BGN")

Това е решението с горните фиксове.

0
02/05/2020 02:40:12
deltanov avatar deltanov 5 Точки

Благодаря!

 

Само не можах да разбера каква е разликата между:

 

if avgRes>5.5:
    getScolSchol='Y'

# Изискване за социална стипендия - доход на член от семейството по-малък от минималната работна заплата и успех над 4.5.

elif income<minSal and avgRes>=4.5:
    getSocialScholar='Y'

 

И:

 

if avgRes>5.5:
    getScolSchol='Y'

# Изискване за социална стипендия - доход на член от семейството по-малък от минималната работна заплата и успех над 4.5.

if income<minSal and avgRes>=4.5:
    getSocialScholar='Y'

Защо ако ползвам elif не се получава...

 

Поздрави,

Микто

 

1
MartinBG avatar MartinBG 4803 Точки

@deltanov

Когато се използва if-elif-...-else конструкция, ще бъде изпълнен кода само за първата валидна проверка (останалите директно се пропускат, дори да има валидни и сред тях).

Конкретно по задачата, ако студентът има успех над 5.5, ще се изпълни само кодът в if-a, т.е. getScolSchol='Y', дори и приходите на студента да са под минималните (при което трябва да се сетне и getSocialScholar='Y').

0
deltanov avatar deltanov 5 Точки

Тъкмо написах коментара и се сетих:): Всъщност с ELIF конструкцията не позволявам едновременно да може да получи социялна и отличен успех стипендия.

 

Отново благодаря за помощта. 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.