Loading...
DeyanAltanov avatar DeyanAltanov 6 Точки

Nether Realms

Условие(Задача 4): https://softuni.bg/trainings/resources/officedocument/52671/regular-expressions-more-exercise-python-fundamentals-september-2020/3132

Код(60/100): https://pastebin.com/AuVqFD9X

Тези от примера минават.

Тагове:
0
Python Fundamentals 08/01/2021 03:40:42
DeyanAltanov:
Проблема е решен. Поздрави на колежките Arksiana и Elena.
Arksiana7 avatar Arksiana7 26 Точки

Здравей.

По условия има доста неща които си изпуснал.

1. The input will be read from the console. The input consists of a single line containing all demon names separated by commas and zero or more spaces - може входа да е с повече спейсове, както отпред, така и преди ... съветвам те тук да направиш отделен регекс. 

2. Също по условие регексите за кръв и демидж има какво още да добавиш по тях по условието. 

От там главно идват грешките.
Ако имаш затрудния напред, нареща съм! 

 

1
DeyanAltanov avatar DeyanAltanov 6 Точки

Относно точка едно - забелязах го това и направих проверка със повече интервали.

info = input().split(', ') -> върши работата. Следния пример: M3ph1st0**,       Azazel,      name -> си работи без проблеми.

Също така коригирах регекса за кръв, но резултата е същия:

[^0-9\+\-\*\/\.]
0
06/01/2021 18:36:38
Elena123456 avatar Elena123456 235 Точки

Здравейте,

на C#  съм, но предполагам, че регексите ще са същите:

Regex regexForHealth=new Regex(@"[^\d\+\-*\/\.]");

Regex regexForDamage = new Regex(@"(?:\+|-)?[0-9]+(?:\.[0-9]+)?");

Regex regexForMultiplyOrDivideSymbols = new Regex(@"[*\/]");

 

А за сплита добавете и това- { ' ', ','},StringSplitOptions.RemoveEmptyEntries. Синтаксиса ще е различен, но идеята е, че са няколко сепаратора и се изтрива празното пространство между тях.

И ако искате погледнете и решението ми на C#, предполагам няма да е много по-различно  на Python- https://pastebin.com/ZPqmrnaX

Дано да съм успяла да помогна.

Поздрави!

0
08/01/2021 02:24:58
DeyanAltanov avatar DeyanAltanov 6 Точки

Реално аз сплитвам само по ', ', което означава, че ще има празни пространства. Обаче чрез demon = demon.strip() изтривам празните пространства в началото и края на string-a. Проблема не е с тях, аз направих проверка със празни пространства между имената и си работи добре. Regex-a за за health-a ми е същия, но като добавих вашия regex за damage, ми даде 60/100. Много благодаря!

Поздрави и на вас!

1
Elena123456 avatar Elena123456 235 Точки

Радвам се, че имате вече 60 точки. smiley

Аз и колегата @ Arksiana7 се опитваме да Ви обясним, че сплита не Ви е пълен.

Да, реално си сплитвате само по  ',  '  (запетайка и един възможен спейс), но вижте условието:

The input consists of a single line containing all demon names separated by commas and zero or more spaces in the format...

Реално трябва да сплитвате по няколко възможни сепаратора и програмата ще работи, ако сепараторите са тези-  " "  и   ","  .  

Зададен сплита по вашия начин няма да работи с това примерно- ",     " (с много спейсове)  или с това ","  (без спейс).

В началото, като решавах и аз тази задача също  сплитвах по вашия начин и Judge не даваше 100/100. След като смених сепаратора на горните два, чак тогава ми даде 100/100.

И имайте предвид, че понякога дадените инпути не са пълни на 100% , а самото условие подсказва, че Judge ще има и допълнителни тестове с допълнителни инпути. Прави ми впечатление, че това важи особено за задачите със звездичка.

Подрави!

Ели

0
DeyanAltanov avatar DeyanAltanov 6 Точки

Зададен сплита по вашия начин няма да работи с това примерно- ",     " (с много спейсове)  или с това ","  (без спейс). -> Работи, понеже след сплита изчиствам празните пространства в началото и края на стринга, чрез strip метода. Резултата от следния пример: M3ph1st0**,       Azazel е:

1)M3ph1st0**, 2)      Azazel. След прилагането на метода -> 1)M3ph1st0**, 2)Azazel.

" "  -> не мисля, че това е възможен сепаратор, понеже от условието се разбира, че задължително ще има запетая.

" all demon names separated by commas and zero or more spaces"

Въпреки това, го добавих като възможност, но нямаше промяна.

0
08/01/2021 14:21:20
Arksiana7 avatar Arksiana7 26 Точки

Здравей.

1.Грешка на ред 20. трябва да е ("/")

2. Грешка в регексите. 
Когато става дума за такъв тип задачи, помисли за всякакви възможни тестове.

Сплита съм го извела в отделен регекс, защото може да има спейс и преди запетаята. 
С твоя метод - Strip - задачата даде 90/100. 

Твоя код - 100/100
https://pastebin.com/xNJZxWrb

1
DeyanAltanov avatar DeyanAltanov 6 Точки

Леле колко съм разсеян! smiley

Ами '/' за деление, много ясно(facepalm).

Супер си, много ти благодаря!

Приятен уикенд!

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