Решение на Телефонна любов от Назифе Алиджик
Резултати
- 9 точки от тестове
- 0 бонус точки
- 9 точки общо
- 33 успешни тест(а)
- 4 неуспешни тест(а)
Код
Лог от изпълнението
.......F..E..F....F.................. ====================================================================== ERROR: test_empty_input (test.TestIsPhonetastic) Test with empty input. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread raise result ZeroDivisionError: integer division or modulo by zero ====================================================================== FAIL: test_random_mixed_case (test.TestAnglesToNums) Test with a random mixed input. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread raise result AssertionError: Lists differ: [5, 1, 2, 4, 9, 1, 8, 10, 9] != [5, 1, 2, 4, 9, 1, 8, 0, 9] First differing element 7: 10 0 - [5, 1, 2, 4, 9, 1, 8, 10, 9] ? - + [5, 1, 2, 4, 9, 1, 8, 0, 9] ====================================================================== FAIL: test_correct_mapping (test.TestNumsToAngles) Test correct mapping for all numbers. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread raise result AssertionError: 0 != 300 ====================================================================== FAIL: test_random_mixed_case (test.TestNumsToAngles) Test with a random mixed input. ---------------------------------------------------------------------- Traceback (most recent call last): File "/storage/deedee/data/rails/pyfmi-2022/releases/20221020151654/lib/language/python/runner.py", line 67, in thread raise result AssertionError: 90 != 150 ---------------------------------------------------------------------- Ran 37 tests in 0.467s FAILED (failures=3, errors=1)
История (5 версии и 10 коментара)
Назифе обнови решението на 30.10.2022 17:25 (преди над 2 години)
Този речник е почти идентичен на този от горната функция. Бих сложил една дефиниця извън функциите, за да избегна дублиране. Не е нужно да преправяш. Само споменавам, за да го имаш предвид следващия път.
Ако името ти съвпада с резервирана дума, прието е долната черта да се слага след, а не преди името - tuple_
.
Долна черта преди името има значение на protected атрибут.
Използвай unpacking:
number, repetitions = _tuple
Или пък numbers.extend([number] * repetitions)
- само идея.
Скобите тук са излишни (а за закоравял Питонджия дори грешни).
Скобите тук са излишни (а за закоравял Питонджия дори грешни).
По принцип бих направил тази операция преди цикъла с основната ти логика, т.е. първи си обходи списъка и си го нормализирай/закръгли, пък тогава оперирай върху него.
НО, по-скоро коментирам, защото за подобни случаи би ти помогнало enumerate
- хем имаш индекса, хем елемента:
for index, angle in enumerate(angles)
ПП: Първото изречение е коментар, който ако имплементираш, ще доведе до по-висока сложност на алгоритъма ти, така че е под въпрос кое е по-добре, но така тялото на цикъла ти се усложнява, така че моето субективно мнение е, че е по-добре да направиш комрпомис с времето, за сметка на по-лесен за четене код.
Тази променлива ми се струва излишна. Това можеш лесно да сложиш на последния ред, при проверката.
Или просто return angle % word_size == 0
По принцип съм против използването на празни редове в тялото на самите функции и предпочитам по един празен ред само м/у тях. Наясно съм, че това е субективно мнение, затова не го налагам, но при твоят код реално има по един празен ред м/у всеки два реда (с някои изключения). Това е напълно излишно и смятам, че при толкова много празни редове, мога да твърдя - грешно.
По принцип бих направил тази операция преди цикъла с основната ти логика, т.е. първи си обходи списъка и си го нормализирай/закръгли, пък тогава оперирай върху него.
НО, по-скоро коментирам, защото за подобни случаи би ти помогнало
enumerate
- хем имаш индекса, хем елемента:for index, angle in enumerate(angles)
ПП: Първото изречение е коментар, който ако имплементираш, ще доведе до по-висока сложност на алгоритъма ти, така че е под въпрос кое е по-добре, но така тялото на цикъла ти се усложнява, така че моето субективно мнение е, че е по-добре да направиш комрпомис с времето, за сметка на по-лесен за четене код.