0
Помогите, найти ошибку, пожалуйста.
https://sololearn.com/coach/72/?ref=app Задача по ссылке выше, написала код, два теста прошел, остальные нет, но к сожалению они закрыты и я не могу понять какие там данные(( l = input() list = l.upper() kol = 0 chet = 0 p = 0 for i in list: if i=="H" and p != 1: chet = 1 if chet == 1 and i=="B": kol+=1 if i=="P": p = 1 chet = 0 if p == 0: kol = 0 print(kol) Исправила на это, но все равно не проходит тест( https://code.sololearn.com/c6h98ME3zQD7/?ref=app
12 Réponses
+ 2
I didn't use string slicing, just calculate absolute value from (index of "H" subtracted by index of "P") subtracted by 1
Just like this ...
sample = input().upper()
house = sample.index( "H" )
pond = sample.index( "P" )
print( abs( house - pond ) -1 )
+ 5
Насколько я понимаю ваш последний вариант не прошол потому что ваша нарезка читается только слева на право.
А что если очерёдность будет изменена на противоположную? 😉
По этой же причине у вас не прошол и первый вариант, хоть он написан гораздо мудрёнее... 😎
+ 5
Есть много вариантов, можно исправить как первый вариант, так и второй, который значительно проще.
Не хотелось бы лишать вас творческого начала в логических рассуждениях, но если вы хотите, то нужно добавить условие при котором можно будет изменить шаг срезки на отрицательный: list[start:stop:step], или перевернуть саму строку: list[::-1]
🖐️😎
+ 5
Ruzik73 Поздравляю! 👏👏👏👍😎
Это то самое простое условие о котором я думал.
При желании его можно немножко сократить:
house = list.index("H")
pond = list.index("P")
if house > pond:
house,pond = pond,house
kol = list[house+1:pond]
k = len(kol)
print(k)
Рад был помочь, если вы захотите обратиться к кому нибудь персонально, то кликните на @ и появится список имён, после чего можете либо сразу выбрать из списка, либо продолжить набирать имя.
Удачного кодирования! 🖐️😎
+ 3
Good job!
Nobody knows the hidden cases, but I guess we can always try our best to try solve a problem ; )
+ 3
Спасибо вам большое! Исправила второй вариант своего кода, все проверки прошел 🥳
Добавила условие и изменила срезку, как вы и рекомендавали)
(Если кому-то интересно, измененый код по ссылке выше)
Очень рада, что нашлись отзывчивые люди, готовые помочь и обьяснить🥰
Большое спасибо за помощь вам Solo и вам Ipang 🙏🏼🙏🏼🙏🏼
+ 1
Read input into variable <sample>
Find index of "H" in <sample> and save it in variable <house>
Find index of "P" in <sample> and save it in variable <pond>
Print absolute value of ( <house> - <pond> ) - 1
You got this!
+ 1
Спасибо за ответ! Сейчас буду пробовать.
+ 1
Сделала так, но все равно не проходит тест(((
list = input().upper()
try:
house = list.index("H")
pond = list.index("P")
kol = list[house+1:pond]
k = kol.count("B")
print(k)
except:
print(0)
+ 1
Спасибо вам большое! Все получилось! Так прошла проверку))
Я конечно не поняла, почему мой последний вариант не прошел, но да ладно)))
+ 1
Действительно, об этом я не думала, как сделать в противоположенную сторону)))
Спасибо за наводку)
Первый вариант сделан тяп ляп))
+ 1
Так даже проще😁 и код существенно сокращается, тем более если сравнить с начальным вариантом🙈
Я тут новичок, спасибо за подсказки Solo ☺️