Решение на doge от Ирина Иванова

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

Към профила на Ирина Иванова

Резултати

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

Код

"first task"
def checking(number):
if number % 3 == 0 and number % 5 == 0:
return "suchmuch"
if number % 3 == 0:
return "such"
elif number % 5 == 0:
return "much"
else:
return str(number)
def wow_such_much(start, end):
return [checking(x) for x in range(start, end)]
"second task"
DOGE_WORDS = ["wow", "lol", "so", "such", "much", "very"]
def count_doge_words(string):
return len([x for x in string.split(" ") if x in DOGE_WORDS])

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

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

OK

История (3 версии и 6 коментара)

Ирина обнови решението на 06.03.2014 13:56 (преди над 10 години)

+"first task"
+def gen_list(start, end):
+ count = start
+ while count < end:
+ yield count
+ count += 1
+
+def checking(number):
+ if number % 3 == 0 and number % 5 == 0:
+ return "suchmuch"
+ if number % 3 == 0:
+ return "such"
+ elif number % 5 == 0:
+ return "much"
+ else:
+ return number
+
+def wow_such_much(start, end):
+ return list(map(lambda x: checking(x), gen_list(start,end)))
+
+def main():
+ print(wow_such_much(1, 16))
+if __name__ == '__main__':
+ main()
+
+
+
+
+"second task"
+def is_doge_word(x):
+ doge_word = ["wow", "lol", "so", "such", "much", "very"]
+ if x in doge_word:
+ return True
+ else:
+ return False
+
+def count_doge_word(string):
+ all_words_in_the_string = string.split(" ")
+ list_doge_word = list(filter(lambda x: is_doge_word(x), all_words_in_the_string))
+ return len(list_doge_word)
+
+def main():
+ print(count_doge_word("wow much hard such difficult"))
+ print(count_doge_word(" wow so much thing wow lol"))
+if __name__ == '__main__':
+ main()
  • Моля те изпълни си тестовете!!! В момента автоматизираните тестове гърмят и няма да получиш никакви точки за решението си
  • идентациите трябва да са по 4 интервала
  • виж дали range няма да ти свърши работа някъде
  • можеш да подадеш func вместо lambda x: func(x)
  • това не е хубаво, виж дали не можеш да го редактираш:

     if somethig:
         return True
     else:
         return False
    

Ирина обнови решението на 06.03.2014 21:10 (преди над 10 години)

"first task"
def gen_list(start, end):
- count = start
- while count < end:
- yield count
- count += 1
+ count = start
+ while count < end:
+ yield count
+ count += 1
def checking(number):
- if number % 3 == 0 and number % 5 == 0:
- return "suchmuch"
- if number % 3 == 0:
- return "such"
- elif number % 5 == 0:
- return "much"
- else:
- return number
+ if number % 3 == 0 and number % 5 == 0:
+ return "suchmuch"
+ if number % 3 == 0:
+ return "such"
+ elif number % 5 == 0:
+ return "much"
+ else:
+ return str(number)
def wow_such_much(start, end):
- return list(map(lambda x: checking(x), gen_list(start,end)))
+ return list(map(lambda x: checking(x) ,gen_list(start,end)))
-def main():
- print(wow_such_much(1, 16))
-if __name__ == '__main__':
- main()
-
-
-
-
"second task"
-def is_doge_word(x):
- doge_word = ["wow", "lol", "so", "such", "much", "very"]
+def count_doge_words(string):
- if x in doge_word:
+ count = 0
- return True
+ doge_word = ["wow", "lol", "so", "such", "much", "very"]
- else:
+ all_words_in_the_string = string.split(" ")
- return False
+ for i in range(len(all_words_in_the_string)):
-
+ if all_words_in_the_string[i] in doge_word:
-def count_doge_word(string):
+ count += 1
- all_words_in_the_string = string.split(" ")
+ return count
- list_doge_word = list(filter(lambda x: is_doge_word(x), all_words_in_the_string))
- return len(list_doge_word)
-
-def main():
- print(count_doge_word("wow much hard such difficult"))
- print(count_doge_word(" wow so much thing wow lol"))
-if __name__ == '__main__':
- main()

Благодаря ви :))) Не бях видяла тестовете и не бях забелязала , че цифрите към първата функция трябва да са стрингове. Идеята ми първоначално беше да не използвам for цикъл, а нещо по - интересно. Лека вечер :)))

Явно моя,

range прави точно това, което и твоята gen_list(т.е. нямаш нужда от него).

Иначе count_doge_words си беше чудесно написан.

С изключението, че filter(lambda x: is_doge_word(x),.. може да се напише по-хубаво така filter(is_doge_word, .., същото важи и за wow_such_much

Функциите са си функции независимо дали са анонимни или именовани ;)

Ирина обнови решението на 10.03.2014 23:59 (преди над 10 години)

"first task"
-def gen_list(start, end):
- count = start
- while count < end:
- yield count
- count += 1
-
def checking(number):
if number % 3 == 0 and number % 5 == 0:
return "suchmuch"
if number % 3 == 0:
return "such"
elif number % 5 == 0:
return "much"
else:
return str(number)
def wow_such_much(start, end):
- return list(map(lambda x: checking(x) ,gen_list(start,end)))
+ return [checking(x) for x in range(start, end)]
"second task"
+DOGE_WORDS = ["wow", "lol", "so", "such", "much", "very"]
+
def count_doge_words(string):
- count = 0
- doge_word = ["wow", "lol", "so", "such", "much", "very"]
+ return len([x for x in string.split(" ") if x in DOGE_WORDS])
- all_words_in_the_string = string.split(" ")
+
- for i in range(len(all_words_in_the_string)):
- if all_words_in_the_string[i] in doge_word:
- count += 1
- return count