Решение на Пет функции от Стоянка Йовкова

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

Към профила на Стоянка Йовкова

Резултати

  • 3 точки от тестове
  • 0 бонус точки
  • 3 точки общо
  • 5 успешни тест(а)
  • 11 неуспешни тест(а)

Код

import functools
def is_pangram(sentence):
letters = ('а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м',
'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х',
'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я')
for letter in letters:
if letter not in sentence.lower():
result = False
break
else:
result = True
return result
def char_histogram(text):
symbol_count = {}
for symbol in text:
value = text.count(symbol)
symbol_count[symbol] = value
return symbol_count
def sort_by(func, arguments):
k = 0
repeat = 0
length = len(arguments) - 1
while k < length and repeat < length:
arg = arguments[k: k + 2]
number = functools.reduce(func, arg)
if number > 0:
arguments[k], arguments[k + 1] = arguments[k + 1], arguments[k]
k += 1
if k == length:
k = 0
repeat += 1
if repeat == length:
return arguments

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

▸ Покажи лога

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

Стоянка обнови решението на 19.03.2014 12:07 (преди около 11 години)

▸ Покажи разликите
+def is_pangram(sentence):
+ letters = ('а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м',
+ 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х',
+ 'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я')
+ for item in letters:
+ if item not in sentence.lower():
+ result = False
+ break
+ else:
+ result = True
+ return result
+
+
+def char_histogram(text):
+ dictionary = {}
+ for item in text:
+ key = item
+ value = text.count(item)
+ dictionary.update({key: value})
+ return dictionary
+
+
+import functools
+
+
+def sort_by(func, arguments):
+ k = 0
+ repeat = 0
+ restart = True
+ length = len(arguments) - 1
+ while restart:
+ restart = False
+ while k < length and repeat < length:
+ number = functools.reduce(func, arguments[k:k + 2])
+ if number > 0:
+ arguments[k], arguments[k + 1] = arguments[k + 1], arguments[k]
+ k += 1
+ if k == length:
+ k = 0
+ repeat += 1
+ restart = True
+ if repeat == length:
+ break
+ return arguments
  • в is_pangram итерираш letters тоест по-добре е така for letter in letters:; използваш това, което итерираш в единствено число
  • това с result и break-ването не е хубаво; директно return-вай
  • key = item за какво ти е? защо не използваш директно item; и пак смени item на нещо, от което се състои text
  • ако искаш в даден речник да сложиш на ключ дадена стойност правиш d[key] = value, а не d.update({key: value})
  • не използвай типове в имената; dictionary
  • import-овете стоят най-отгоре във файла
  • трябва да преработиш sort_by, прекалено е сложно и хаотично за един sort
  • това, което правиш с reduce не е коректно, просто си извикай функцията с два аргументa; reduce не прави следното: да извика функцията с всички елементи на дадената колекция като аргументи, това, че в случая прави това е по-скоро инцидентно

Стоянка обнови решението на 19.03.2014 16:19 (преди около 11 години)

▸ Покажи разликите
+import functools
+
+
def is_pangram(sentence):
letters = ('а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м',
'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х',
'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я')
- for item in letters:
- if item not in sentence.lower():
+ for letter in letters:
+ if letter not in sentence.lower():
result = False
break
else:
result = True
return result
def char_histogram(text):
- dictionary = {}
- for item in text:
- key = item
- value = text.count(item)
- dictionary.update({key: value})
- return dictionary
+ symbol_count = {}
+ for symbol in text:
+ value = text.count(symbol)
+ symbol_count[symbol] = value
+ return symbol_count
-import functools
-
-
def sort_by(func, arguments):
k = 0
repeat = 0
- restart = True
length = len(arguments) - 1
- while restart:
- restart = False
+ while k < length and repeat < length:
- while k < length and repeat < length:
+ arg = arguments[k: k + 2]
- number = functools.reduce(func, arguments[k:k + 2])
+ number = functools.reduce(func, arg)
- if number > 0:
+ if number > 0:
- arguments[k], arguments[k + 1] = arguments[k + 1], arguments[k]
+ arguments[k], arguments[k + 1] = arguments[k + 1], arguments[k]
- k += 1
+ k += 1
- if k == length:
+ if k == length:
- k = 0
+ k = 0
- repeat += 1
+ repeat += 1
- restart = True
+ if repeat == length:
- if repeat == length:
+ return arguments
- break
- return arguments