Решение на doge от Стефан Маринов

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

Към профила на Стефан Маринов

Резултати

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

Код

def wow_such_much(start, end):
output = []
for number in range(start, end):
if number%3 and number%5: word = str(number)
else:
word = ''
if not number%3: word += 'such'
if not number%5: word += 'much'
output.append(word)
return output
def count_doge_words(sentence):
count = 0
for word in sentence.split():
if word in {'wow', 'lol', 'so', 'such', 'much', 'very'}:
count += 1
return count

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

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

OK

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

Стефан обнови решението на 08.03.2014 19:55 (преди над 10 години)

+def wow_such_much(start, end):
+ output = []
+ for number in range(start, end):
+ if not (number % 3):
+ if not (number % 5):
+ output.append('suchmuch')
+ else:
+ output.append('such')
+ elif not (number % 5):
+ output.append('much')
+ else:
+ output.append(str(number))
+ return output
+
+def count_doge_words(sentence):
+ count = 0
+ for word in sentence.lower().split():
+ if word == 'wow' or word == 'lol' or word == 'so' \
+ or word == 'such' or word == 'much' or word == 'very':
+ count += 1
+ return count

Стефан обнови решението на 08.03.2014 23:01 (преди над 10 години)

def wow_such_much(start, end):
output = []
for number in range(start, end):
if not (number % 3):
if not (number % 5):
output.append('suchmuch')
else:
output.append('such')
elif not (number % 5):
output.append('much')
else:
output.append(str(number))
return output
def count_doge_words(sentence):
count = 0
- for word in sentence.lower().split():
- if word == 'wow' or word == 'lol' or word == 'so' \
- or word == 'such' or word == 'much' or word == 'very':
- count += 1
+ doge_words = {'wow', 'lol', 'so', 'such', 'much', 'very'}
+ for word in sentence.split():
+ if word in doge_words:
+ count += 1
return count

Ако ставаше въпрос за втория, пробвах с един set. В първата функция се опитах тази if-else-if стълбица да я съкратя и реално може, но при досегашните ми опити от това страда четимостта и разбираемостта на кода, което е против PEP 20:

  1. Explicit is better than implicit.
  2. Simple is better than complex.
  3. Readability counts.

Ако все пак смяташ, че мога да го направя и по-добре, ми свирни, за да го помисля още малко. :)

Стефан обнови решението на 09.03.2014 00:15 (преди над 10 години)

def wow_such_much(start, end):
output = []
for number in range(start, end):
if not (number % 3):
if not (number % 5):
output.append('suchmuch')
else:
output.append('such')
elif not (number % 5):
output.append('much')
else:
output.append(str(number))
return output
def count_doge_words(sentence):
count = 0
- doge_words = {'wow', 'lol', 'so', 'such', 'much', 'very'}
for word in sentence.split():
- if word in doge_words:
+ if word in {'wow', 'lol', 'so', 'such', 'much', 'very'}:
count += 1
return count

Свиркам. Много се радвам, че си прочел PEP 20, но този блок не е нито прост, нито четим:

if not (number % 3):
    if not (number % 5):
        output.append('suchmuch')
    else:
        output.append('such')
elif not (number % 5):
    output.append('much')
else:
    output.append(str(number))
  • Нямаш нужда от скобите в условията на if-овете
  • Далеч по-четимо би било, ако не влагаш if-овете един в друг

Стефан обнови решението на 09.03.2014 12:54 (преди над 10 години)

def wow_such_much(start, end):
output = []
for number in range(start, end):
- if not (number % 3):
- if not (number % 5):
- output.append('suchmuch')
- else:
- output.append('such')
- elif not (number % 5):
- output.append('much')
+ if number%3 and number%5: word = str(number)
else:
- output.append(str(number))
+ word = ''
+ if not number%3: word += 'such'
+ if not number%5: word += 'much'
+ output.append(word)
return output
def count_doge_words(sentence):
count = 0
for word in sentence.split():
if word in {'wow', 'lol', 'so', 'such', 'much', 'very'}:
count += 1
return count