Ето го и второто домашно. Срокът ви е до 23.03 17:00.
Примерния тест можете да намерите в GitHub хранилището.
Отново се запознайте с това как (не) се предават задачи.
Ето го и второто домашно. Срокът ви е до 23.03 17:00.
Примерния тест можете да намерите в GitHub хранилището.
Отново се запознайте с това как (не) се предават задачи.
@Кирил , тук искам да вмъкна само , че при този тест:
def test_capitals(self):
input = {
"Israel": "Jerusalem",
"Austria": "Vienna",
"Palestine": "Jerusalem",
"Sweden": "Stockholm"
}
output = {
'Jerusalem': 'Israel',
'Stockholm': 'Sweden',
'Vienna': 'Austria'
}
self.assertEqual(output, s.reversed_dict(input))
Нарушава условието зададено от вас , а то е именно
"Ако в оригиналния речник има две равни стойности, сте свободни в резултата да игнорирате всички освен една."
Ако искаме да работи теста както трябва в този конкретен пример мисля , че трябва да изглежда нещо подобно:
def test_capitals(self):
input = {
"Israel": "Jerusalem",
"Austria": "Vienna",
"Palestine": "Jerusalem",
"Sweden": "Stockholm"
}
output = {
'Jerusalem': 'Israel',
'Stockholm': 'Sweden',
'Vienna': 'Austria'
}
output2 = {
'Jerusalem': 'Palestine',
'Stockholm': 'Sweden',
'Vienna': 'Austria'
}
self.assertTrue(s.reversed_dict(input) in [output, output2])
П.С: Не съм направил pull request , защото не знам как се прави , споменахте го на лекцията и очаквахте всички да знаем как се прави явно(това може би е предложение за "хитринка")(to all the haters - да , знам , че мога да прочета в интернет и да видя как става, казвам го заради feedback-a , когато намеря свободно време ще се науча.Thank you, less hate more love.Peace!
Прав си, оправих теста и пушнах.
П.С: Не съм направил pull request , защото не знам как се прави , споменахте го на лекцията и очаквахте всички да знаем как се прави явно(това може би е предложение за "хитринка")(to all the haters - да , знам , че мога да прочета в интернет и да видя как става, казвам го заради feedback-a , когато намеря свободно време ще се науча.Thank you, less hate more love.Peace!
Не се притеснявай за това. Не очакваме да знаете как се използва git, след някоя и друга лекция ще обърнем внимание на това :)
Има още две правописни грешки в тестовете мисля , че :
def test_with_three_levels_of_nesting(self):
self.assertEqual(
{'a': 1, 'b': {'a': 2, 'b': {'a: 1'}}},
s.flatten_dict({'a': 1, 'b.a': 2, 'b.b.a': 1})
)
Мисля , че трябва да е :
{'a': 1}
а не
{'a: 1'}
и на двата теста , за flatten и unflatten е така..
Какво се очаква да бъде държанието на функциите за flatten и unflatten на речници, когато даден ключ, който трябва да се създаде вече същестува, например:
При unflatten_dict
имаме
{
'llama.mincho': 42
'llama': 'whatever'
}
В случая трябва да създадем двойката 'llama': {'mincho': 42}
, но 'llama'
вече се използва като ключ. Overwrite-ваме ли го?
@Михаил, в този случай държанието не е дефинирано. Просто ще очакваме в резултата да има ключ 'llama'
с една от двете стойности:
'whatever'
{'mincho': 42}
П.П.: Обнових тестовете отново, заради грешки в тях.
На тестовете за flatten_dict виждам, че се опитвате да приложите функцията на вече flatten-нат речник, като сравнявате дали е равен на unflatten-нат. Това така ли тряба да е (май няма много смисъл)?
Едит: Сега като се загледам, същото нещо има и в тестовете за обратната ф-я, unflatten_dict.
Аз ли не разбирам или е при вас проблема?
В първата функция, ако например имаме: print(extract_type([('f', 1), (5, 10), ('i', 1), (0.3, 100), ('z', 2), ('bu', 1), ('z', 2)], int)) string от числата ли връщаме - '5555555555' или цяло число??
В първия от тестовете за unflatten_dict има грешка. В това, което е подадено като очакван отговор в "най-вътрешния" речник се очаква {'a: 1'}, а трябва да е {'a': 1}
Ето тестове и от мен: https://gist.github.com/IliyanYakimov/65d3ff737df203a9b1da
@Светлин, това беше обновено по-рано днес.
@Илиян, прав си, поправих го.
@Деница, очакваш стринг :)
На първата фунция освен int и str да очакваме ли други типове като bool и т.н.? И str включва ли знаци като '$', '#', '~', '(' и т.н.
@Минх , защо просто не изходиш от дефиницията на стринг? Всяко нещо в python обградено в единични или двойни кавички е стринг.
За първата задача: Според мен всичко можеш да се cast-не към string и след това резултата трябва да се върне като се повтори n-пъти. Тоест, ако имаме кода
input_example = [((1, 2), 4), ('f', 3)]
print(extract_type(input_example, tuple))
То на екрана ще се изпринти:
(1, 2)(1, 2)(1, 2)(1, 2)
Прав ли съм?
offtopic: @Янислав, за pull request-и може да видиш това ръководство. Доста добре е описан процеса. Прегледай го, ако не ти помогне (в което се съмнявам), може да пишеш във форума или да питаш Google ;)
@Яворе, прав си.
Именуване на променливи и колекции от сорта на "mylist" или "mystring" допустимо ли че, ако предположим, че извършваме просто някакво филтриране в зависимост от задачата? В случая 5 малки функции.
Според мен, не е. Винаги можеш да намериш начин как да си кръстиш променливата с по-семантично име ;)
тестове :)
В един от 3rd party тестовете има следния assert:
def test_with_dict(self):
input_ = {}, {'a': 1}, {}, {'a': 2}, {'a': 1}, {}
output = {}, {'a': 1}, {}, {'a': 1}, {}
self.assertEqual(s.reps(input_), output)
Да очакваме ли елементи, които са unhashable?
Бях се объркал си мислех, че '==' не е толкова интелегентно :D
И един тест от мен
https://github.com/minh0722/python_tests/blob/master/five_functions_tests.py
@Минх Нгуен , не съм сигурен, но според мен тестовете имат 1 грешка на ред 114, поне при мен гърми на този тест.
-> self.assertEqual(s.unflatten_dict(input), output) май трябва да е -> self.assertEqual(solution.unflatten_dict(input), output)
ето малко тестове и от мен :)
@Тачо прав си, поправил съм грешката :)
Стартирал съм си всички тестове от вас и минават , само някой да е изтървал някой случай :D :D :D
:D супер, дано обаче и тестовете да са правилни, защото... :D
Чакаме и екипът да качи истинските тестове.. :)
Трябва да сте влезли в системата, за да може да отговаряте на теми.