Профил
Loading...
+ Нов въпрос
sevastiankr avatar sevastiankr 0 Точки

For цикъл упражнение. 6-та задача

6.Заплата

Шеф на компания забелязва че все повече служители прекарват  време в сайтове, които ги разсейват. 

За да предотврати това, той въвежда изненадващи проверки на отворените табове на браузъра на служителите си. Според сайта се налагат различни глоби:

  • "Facebook" -> 150 лв.
  • "Instagram" -> 100 лв.
  • "Reddit" -> 50 лв.

От конзолата се четат два реда:

  • Брой отворени табове в браузъра n - цяло число в интервала [1...10]
  • Заплата - число в интервала [700...1500]

След това n – на брой пъти се чете име на уебсайт – текст

Ако по време на проверката заплатата стане по-малка или равна на 0 лева, на конзолата се изписва
"You have lost your salary." и програмата приключва. В противен случай след проверката на конзолата се изписва остатъкът от заплатата (да се изпише като цяло число).

 

Дава ми 88/100 в Judge при 10-ти тест и не разбирам защо

https://pastebin.com/ZTTca5b2

Тагове:
0
AndrewWillie avatar AndrewWillie 4 Точки

It's good that you wrote this article. You did your best. Thanks for the extensive information that you have provided.

0
Rafaelo avatar Rafaelo 26 Точки

Здравей,

По условие се изисква програмата да приключи в момента в който заплатата е по-малка или равна на 0.

Така написан кода обаче, for loop-a ще се върти докато tabs + 1 итерациите не бъдат изпълнени до край.

Трябва да добавиш командата break, когато проверяваш дали заплатата е по-малка или равна на 0 и ако това върне True, тогава излизаме от for loop-а и приключваме програмата.

За референция: https://pastebin.com/J3YVznFU и дава 100 / 100 в Judge.

Успех!

0
sevastiankr avatar sevastiankr 0 Точки

Благодаря ти, пропуснал съм го това.

0
merchant avatar merchant 3 Точки

Може ли да погледнете и това решение, дава 77/100 в Judge? 

Къде да се постави break при това решение?

Мерси предварително!

 

 

n = int(input())
salary = int(input())

for index in range(0, n):
    text = input()
    if text == "Facebook":
        if salary - 150 <= 0:
            print('You have lost your salary.')
        else:
            salary -= 150

    elif text == "Instagram":
        if salary - 100 <= 0:
            print('You have lost your salary.')
        else:
            salary -= 100

    elif text == "Reddit":
        if salary - 50 <= 0:
            print('You have lost your salary.')
        else:
            salary -= 50

if salary > 0:
    print(int(salary))



 

0
svephoto avatar svephoto 428 Точки

Здравей, merchant,

 

Според мен имаш нужда от проверка за това дали не ти подават сайт, различен от трите изброени. Ако е такъв, даваш continue - можеш да сложиш проверката след трите изброени като else:

 

else:
    continue

 

Извади смятането за изваждането на съответната глоба от заплатата преди да провериш дали последната е <= 0 и ако вече служителят си е изгубил заплатата сложи по един break и при трите случая, в които печаташ нужното съобщение (по условие програмата трябва да приключи). Пример, който трябва да се приложи и за останалите два варианта:

 

if text == "Facebook":
    salary -= 150
    if salary <= 0:
        print('You have lost your salary.')
        break

 

По този път трябва да стигнеш до 100/100. Ако все още имаш трудности, пиши отново. Успех!

0
OnmoviesApp avatar OnmoviesApp 5 Точки

Interesting post. I Have Been wondering about this issue. so thanks for posting. Pretty cool post.It 's really very nice and Useful post Onmovies Malayalam TV Apk

0