Страница 3 из 5

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 2:39 pm
caltrain
Buddy писал(а): Чт июл 20, 2023 4:59 am

Код: Выделить всё


def getBreeds():
    try:
        with open("breeds.txt") as f:
            return f.read().split(",")
    except:
        return False

def findBreed(breeds, pet):
    if pet not in breeds:
        return "You don't have a known breed."
    return "You have a known breed."

def main():
    breeds = getBreeds()
    if not breeds:
        return "No list of breeds loaded."
    return findBreed(breeds, input("What breed of cat do you have? "))

if __name__ == "__main__":
    print(main())
	
Возможно, import csv - это намек
кроме того с set функция становится быстрой O(1) для поиска , хотя строить O(n), и решает проблему повторов
не отрабатывается вопрос пустых строк и пробелов
И мешать boolean с str - некошерно
Cкорее, str+None, str+exception

Код: Выделить всё

import csv
from typing import Set, Union

def getBreeds() -> Union[Set[str], None]:
    try:
        with open("breeds.txt") as f:
            return set([x.strip() for x in csv.reader(f) if (x and x.strip())])
    except:
        return None

def findBreed(breeds, pet) -> str:
    if not pet or pet.strip() not in breeds:
        return "You don't have a known breed."
    return "You have a known breed."

def main():
    breeds = getBreeds()
    if breeds is None:
        return "No list of breeds loaded."
    return findBreed(breeds, input("What breed of cat do you have? "))


if __name__ == "__main__":
    print(main())
на самом деле нет предела совершенству
по идее exception не должен быть too generic, а только IOError
еxpcetion должен как-то выводится (но не stacktrace), иначе пользователь не узнает, что неладно с файлов
в одном месте мне на такое елеменетарное задание была предьява, почему не класс?

нужет контекст.
или этот сниппет грузится в автоматический проверяльщик с юнит-тестами, где за 5 минут должно всё работать
или чел смотрит на техники программирования?
или это вообще в чате надо было печатать, хорошо что не гугль-докс?

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 3:36 pm
Sergunka
Mad Hatter писал(а): Чт июл 20, 2023 7:37 am Мысли вслух:
Все что связано с обработкой данных крайне рекомендуется делать с помощью Pandas. Вы мне ещё спасибо за это скажете ;)
Правильные пацаны используют Koalas вместо пандыс :)

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 3:58 pm
Mad Hatter
Sergunka писал(а): Чт июл 20, 2023 3:36 pm
Mad Hatter писал(а): Чт июл 20, 2023 7:37 am Мысли вслух:
Все что связано с обработкой данных крайне рекомендуется делать с помощью Pandas. Вы мне ещё спасибо за это скажете ;)
Правильные пацаны используют Koalas вместо пандыс :)
Для scalability есть Dask :)
У Коалы нет merge_asof, отказать.
Koalas is deprecated. If you try using Koalas on clusters that run Databricks Runtime 10.0 (Unsupported) and above, an informational message displays, recommending that you use Pandas API on Spark instead.

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 8:32 pm
Poet77
Ещяе раз спасибо всем ответившим.
Ишодя из ваших коментов и того что мне выдал сайт автоматического ревью я имею следующие замечания:

1. line 5 - The getBreeds function opens the "breeds.txt" file in binary mode, but it should be opened in text mode.
2. line 19 -The findBreed function is not defined before it is called in the main function.
3. line 30 - Must be called main() instead of calling getBreeds()
4. line 11 - The findBreed function does not return after finding a match, so it will always print "You do not have a known breed" even if the breed is found.
move return "list_of_breeds" to the end of getBreeds() function after line 13

5. line 21 - We should simplify findBreed function using "in" or "count()".
6. line 13 - switch "return" to "print"
7. line 21 - The findBreed function could be improved by using a set instead of a list to store the breeds.
8. line 9,24,26 - The script could be improved by adding error handling for file I/O operations.
9. line 5 - The script could be improved by handling user input more gracefully.
10.line 5 - remove "wb+" in - we don't need it

Напишите плиз если что то перекрутил или пропустил в комментах, мне кажется что можно обьединить 1), 9) и 10) или не надо ?
Python_Code.jpg
Python_Code.jpg (96.35 КБ) 328 просмотров

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 8:40 pm
Uzito
Poet77 писал(а): Чт июл 20, 2023 8:32 pm Напишите плиз если что то перекрутил или пропустил в комментах, мне кажется что можно обьединить 1), 9) и 10) или не надо ?
f = open перенести внутрь try блока

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 8:42 pm
alex_127
Uzito писал(а): Чт июл 20, 2023 8:40 pm
Poet77 писал(а): Чт июл 20, 2023 8:32 pm Напишите плиз если что то перекрутил или пропустил в комментах, мне кажется что можно обьединить 1), 9) и 10) или не надо ?
f = open перенести внутрь try блока
1==10

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 10:06 pm
Poet77
alex_127 писал(а): Чт июл 20, 2023 8:42 pm
Uzito писал(а): Чт июл 20, 2023 8:40 pm

f = open перенести внутрь try блока
1==10
Понял, спасибо за ответ, а все остальные что я нашел замечания - согласны ?

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 10:54 pm
OiCaramba
Я нихуа не шарю в питоне но скажу свое веское слово! Установить питона или шот там у вас это минут десять Скомильнуть и зтябы посмотреть на результат это ещё пару минут!

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 11:12 pm
alex_127
Poet77 писал(а): Чт июл 20, 2023 10:06 pm
alex_127 писал(а): Чт июл 20, 2023 8:42 pm

1==10
Понял, спасибо за ответ, а все остальные что я нашел замечания - согласны ?
5,7,8,9 - мелочи (придратся ко всему можно). работать должно же!

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 11:20 pm
Poet77
OiCaramba писал(а): Чт июл 20, 2023 10:54 pm Я нихуа не шарю в питоне но скажу свое веское слово! Установить питона или шот там у вас это минут десять Скомильнуть и зтябы посмотреть на результат это ещё пару минут!
Так смысл код ревью в том чтобы сказать - вот здесь плохо(не работает), нужно вот так а здес не оптимально - нужно тоже так
а если просто запустить его - то не покажет
1)Как нужно чтобы заработало там где не работает - можно догадатся но не всегда
2)Где не оптимально и как сделать чтобы стало оптимально

Re: Кто знает Python

Добавлено: Чт июл 20, 2023 11:25 pm
alex_127
Poet77 писал(а): Чт июл 20, 2023 11:20 pm
OiCaramba писал(а): Чт июл 20, 2023 10:54 pm Я нихуа не шарю в питоне но скажу свое веское слово! Установить питона или шот там у вас это минут десять Скомильнуть и зтябы посмотреть на результат это ещё пару минут!
Так смысл код ревью в том чтобы сказать - вот здесь плохо(не работает), нужно вот так а здес не оптимально - нужно тоже так
а если просто запустить его - то не покажет
1)Как нужно чтобы заработало там где не работает - можно догадатся но не всегда
2)Где не оптимально и как сделать чтобы стало оптимально
мы же не знаем какова функция что мы оптимизируем - нужна куча дополнительных вопросов. как я говорил - а сколько раз искать будем, а какого размера может быть файл, а длина введенной породы ограниченна 16Тб и так далее.

может нужно решение с минимальным количеством букв, кто его знает.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 12:55 am
kyk
alex_127 писал(а): Чт июл 20, 2023 11:25 pmможет нужно решение с минимальным количеством букв, кто его знает.
или бит на ленте Тьюринга

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 1:20 am
alex_127
kyk писал(а): Пт июл 21, 2023 12:55 am
alex_127 писал(а): Чт июл 20, 2023 11:25 pmможет нужно решение с минимальным количеством букв, кто его знает.
или бит на ленте Тьюринга
что интересно 1-машина (0 - пустышка) она такая - https://cs.stackexchange.com/questions/ ... g-complete

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 5:44 am
Mad Hatter
Я уже сказал, что не согласен с некоторым пунктами ревью, но дело ваше.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 5:45 am
Mad Hatter
OiCaramba писал(а): Чт июл 20, 2023 10:54 pm Я нихуа не шарю в питоне
Минус в карму

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 6:18 am
Bobeg
Пюнкт 1. Там проблема не с байнари, хрен с ним. А с тем што открыто для райт рид криэйт. Существующий файл при этом стираеца.
Из него потом ничо низя прочесть.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 6:20 am
Bobeg
Проблема с пунктами 1 и 5 состоит в том што они выдают полнейшее непонимание ревьюэром того чего он делает. Прям как чят гопота.
В комбинации пункты 5 и 7 вообще выглядят как испанский стыд.

В пункте 8 написан откровенный бред про все три упомянутые линии. Пункт восемь в очередной раз демонстрит нам что ривьюэр не то што не знает питон а ваще ничего не знает о программировании.

Наконец в пункте 9 опять какоето невразумительное заявление про линию кода номер 5.

Выводы

Ривьюэр. Не надо творчества. Как люди написали так и копируй. Чтоб заниматься творчеством надо хоть чуть чуть понимать что происходит.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 6:24 am
Buddy
Mad Hatter писал(а): Чт июл 20, 2023 7:36 am
Not Too Late писал(а): Ср июл 19, 2023 8:07 pm Functions main and findBreed will not be executed.
Не будет? Серьёзно? :lol:
И ещё решает, кого нанять, а кого заменить индусом... Вот и вся правд о итерьвюирах, кто сидит на сеньёровскх позициях и гнобит поссоветы заменяя их рекомендоваными индусами :sorry:

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 6:31 am
Buddy
Eсли использовать

Код: Выделить всё

test = open("test.txt", "wb")
без то нужно закрывать файл после чтения

Код: Выделить всё

test.close()
, а то утечка памяти на этот файл. Tак как файлы бывают разные. Я помню это в Жабе такое же вроде.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 7:20 am
WebFunk
Это называется не "код ревью", а "найдите проблемы в коде для проверки вас на вшивость". Код на ревью посылается после прохождения всех тестов, во время которых все явные баги будут вычищены. Так принято в компаниях, иначе это просто неуважение к коллегам. На код ревью редко вкапываются в логику, обычно проверяют оформление, наличие комментов, хэндлеров и принятых корпоративных стандартов.