Помогите, найти ошибку, пожалуйста. | Sololearn: Learn to code for FREE!
Neuer Kurs! Jeder Programmierer sollte generative KI lernen!
Kostenlose Lektion ausprobieren
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

17th Feb 2023, 11:42 AM
Ruzik73
12 Antworten
+ 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 )
17th Feb 2023, 12:42 PM
Ipang
+ 5
Насколько я понимаю ваш последний вариант не прошол потому что ваша нарезка читается только слева на право. А что если очерёдность будет изменена на противоположную? 😉 По этой же причине у вас не прошол и первый вариант, хоть он написан гораздо мудрёнее... 😎
17th Feb 2023, 3:35 PM
Solo
Solo - avatar
+ 5
Есть много вариантов, можно исправить как первый вариант, так и второй, который значительно проще. Не хотелось бы лишать вас творческого начала в логических рассуждениях, но если вы хотите, то нужно добавить условие при котором можно будет изменить шаг срезки на отрицательный: list[start:stop:step], или перевернуть саму строку: list[::-1] 🖐️😎
17th Feb 2023, 5:13 PM
Solo
Solo - avatar
+ 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) Рад был помочь, если вы захотите обратиться к кому нибудь персонально, то кликните на @ и появится список имён, после чего можете либо сразу выбрать из списка, либо продолжить набирать имя. Удачного кодирования! 🖐️😎
17th Feb 2023, 6:47 PM
Solo
Solo - avatar
+ 3
Good job! Nobody knows the hidden cases, but I guess we can always try our best to try solve a problem ; )
17th Feb 2023, 3:34 PM
Ipang
+ 3
Спасибо вам большое! Исправила второй вариант своего кода, все проверки прошел 🥳 Добавила условие и изменила срезку, как вы и рекомендавали) (Если кому-то интересно, измененый код по ссылке выше) Очень рада, что нашлись отзывчивые люди, готовые помочь и обьяснить🥰 Большое спасибо за помощь вам Solo и вам Ipang 🙏🏼🙏🏼🙏🏼
17th Feb 2023, 5:52 PM
Ruzik73
+ 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!
17th Feb 2023, 12:03 PM
Ipang
+ 1
Спасибо за ответ! Сейчас буду пробовать.
17th Feb 2023, 12:06 PM
Ruzik73
+ 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)
17th Feb 2023, 12:18 PM
Ruzik73
+ 1
Спасибо вам большое! Все получилось! Так прошла проверку)) Я конечно не поняла, почему мой последний вариант не прошел, но да ладно)))
17th Feb 2023, 12:49 PM
Ruzik73
+ 1
Действительно, об этом я не думала, как сделать в противоположенную сторону))) Спасибо за наводку) Первый вариант сделан тяп ляп))
17th Feb 2023, 4:33 PM
Ruzik73
+ 1
Так даже проще😁 и код существенно сокращается, тем более если сравнить с начальным вариантом🙈 Я тут новичок, спасибо за подсказки Solo ☺️
17th Feb 2023, 7:10 PM
Ruzik73