Решение на doge от Ивайло Дянков

Обратно към всички решения

Към профила на Ивайло Дянков

Резултати

  • 10 точки от тестове
  • 0 бонус точки
  • 10 точки общо
  • 15 успешни тест(а)
  • 0 неуспешни тест(а)

Код

PARASITIC_WORDS = ["wow", "lol", "so", "such", "much", "very"]
def count_doge_words(input_string):
count = 0
for word in input_string.split(" "):
if word in PARASITIC_WORDS:
count += 1
return count
#--------------------------------------------------------------
SUCH = "such"
MUCH = "much"
def wow_such_much(start, end):
values = []
for number in range(start, end):
string_to_replace = ""
if number % 3 == 0:
string_to_replace += SUCH
if number % 5 == 0:
string_to_replace += MUCH
if string_to_replace:
values.append(string_to_replace)
else:
values.append(str(number))
return values

Лог от изпълнението

...............
----------------------------------------------------------------------
Ran 15 tests in 0.007s

OK

История (2 версии и 1 коментар)

Ивайло обнови решението на 11.03.2014 02:42 (преди над 10 години)

+parasitic_words = ["wow", "lol", "so", "such", "much", "very"]
+
+def count_doge_words(input_string):
+ count = 0
+
+ input_words = input_string.split(" ")
+
+ for word in input_words:
+ if word in parasitic_words:
+ count += 1
+
+ return count
+
+#wow_such_much implementation is below
+SUCH = "such"
+MUCH = "much"
+SUCHMUCH = "suchmuch"
+
+def wow_such_much(start, end):
+ values = []
+ while start < end:
+ if (start % 3) == 0 and (start % 5) == 0:
+ values.append(SUCHMUCH)
+ elif (start % 3) == 0:
+ values.append(SUCH)
+ elif (start % 5) == 0:
+ values.append(MUCH)
+ else:
+ values.append(start)
+
+ start += 1
+
+ return values
  • Ако parasitic_words е константа го обозначи както ви показахме, ако не е - не му е там мястото. Глобалните променливи не са хубаво нещо.

  • input_words излишна, съвсем спокойно можеш да си направиш .split-а в условието на for

  • не са ти необходими тези скоби в if-elif-else клаузите. Операторите за сравнение са с най-нисък приоритет.

  • Относно това:

    while start < end:
        ...
        start += 1
    
    имам две забележки:
    • Обикновено е объркващо и непрепоръчително да използваш параметър получен като вход на функция и за локална променлива.
    • На лекция от вчера(10.03) имаме цял слайд за тази конструкция и кой е по-добрия ѝ вариант.
  • Пусни си и тестовете!! Имаш проблем с елементите на връщания от wow_such_much списък

Ивайло обнови решението на 12.03.2014 02:15 (преди над 10 години)

-parasitic_words = ["wow", "lol", "so", "such", "much", "very"]
+PARASITIC_WORDS = ["wow", "lol", "so", "such", "much", "very"]
def count_doge_words(input_string):
count = 0
- input_words = input_string.split(" ")
-
- for word in input_words:
- if word in parasitic_words:
+ for word in input_string.split(" "):
+ if word in PARASITIC_WORDS:
count += 1
return count
-#wow_such_much implementation is below
+#--------------------------------------------------------------
SUCH = "such"
MUCH = "much"
-SUCHMUCH = "suchmuch"
def wow_such_much(start, end):
values = []
- while start < end:
- if (start % 3) == 0 and (start % 5) == 0:
- values.append(SUCHMUCH)
- elif (start % 3) == 0:
- values.append(SUCH)
- elif (start % 5) == 0:
- values.append(MUCH)
- else:
- values.append(start)
+
+ for number in range(start, end):
+ string_to_replace = ""
+ if number % 3 == 0:
+ string_to_replace += SUCH
- start += 1
+ if number % 5 == 0:
+ string_to_replace += MUCH
+
+ if string_to_replace:
+ values.append(string_to_replace)
+ else:
+ values.append(str(number))
return values