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

Re: Кто знает Python

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

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

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

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

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

Re: Кто знает Python

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

Re: Кто знает Python

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

В пункте 8 написан откровенный бред про все три упомянутые линии. .

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

Выводы

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

насчет #9 - line 5 - The script could be improved by handling user input more gracefully.

мне нужно указывать line number для всех проблем что я нашел, а input проишодит именно в line #5, разве нет ?

А что с #3 :

3. line 30 - Must be called main() instead of calling getBreeds() - все согласны с етим ?

ОК, ишодя из ваших коментов(надеюсь что вы знаете Питон ) - я оставлю так:

1. line 5 - remove "wb+" in - we don't need it
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 13 - switch "return" to "print"
6. line 21 - The findBreed function could be simplified, in particular we can use a "set" instead of a "list" to store the breeds.
7. line 5 - The script could be improved by handling user input more gracefully.

Так нормально ?
Python_Code.jpg
Python_Code.jpg (96.35 КБ) 432 просмотра

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 10:46 am
Uzito
Poet77 писал(а): Пт июл 21, 2023 10:34 am Так нормально ?

6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.


Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.

Re: Кто знает Python

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

В пункте 8 написан откровенный бред про все три упомянутые линии. .

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

Выводы

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

насчет #9 - line 5 - The script could be improved by handling user input more gracefully.

мне нужно указывать line number для всех проблем что я нашел, а input проишодит именно в line #5, разве нет ?

А что с #3 :

3. line 30 - Must be called main() instead of calling getBreeds() - все согласны с етим ?

ОК, ишодя из ваших коментов(надеюсь что вы знаете Питон ) - я оставлю так:

1. line 5 - remove "wb+" in - we don't need it
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 13 - switch "return" to "print"
6. line 21 - The findBreed function could be simplified, in particular we can use a "set" instead of a "list" to store the breeds.
7. line 5 - The script could be improved by handling user input more gracefully.

Так нормально ?

Python_Code.jpg
1 - use proper access mode when opening file, not wb+

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 12:19 pm
alex_127
Uzito писал(а): Пт июл 21, 2023 10:46 am
Poet77 писал(а): Пт июл 21, 2023 10:34 am Так нормально ?
6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.
цикл фор в питоне (которого я не знаю) имеет синтах елсе :-)

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 12:23 pm
Bobeg
Он над нами издеваеца!
Ну сумасшедший, шо возьмешь

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 12:24 pm
Uzito
alex_127 писал(а): Пт июл 21, 2023 12:19 pm цикл фор в питоне (которого я не знаю) имеет синтах елсе :-)
Век живи, век учись.

Ну тогда нужно добавить break чтобы не гнать по всему списку

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 1:26 pm
caltrain
Uzito писал(а): Пт июл 21, 2023 10:46 am
Poet77 писал(а): Пт июл 21, 2023 10:34 am Так нормально ?

6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.


Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
И вот вы попались с этим циклом.
Породы надо загрузить в set ,
Тогда вся проверка схлопывается до
return input in breed_set
O(1), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 1:38 pm
Bobeg
caltrain писал(а): Пт июл 21, 2023 1:26 pm
Uzito писал(а): Пт июл 21, 2023 10:46 am

6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.


Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
И вот вы попались с этим циклом.
Породы надо загрузить в set ,
Тогда вся проверка схлопывается до
return input in breed_set
O(1), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
List тоже подлерживает in
Не обязательно грузить в лист штоб сработало.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 3:15 pm
Uzito
caltrain писал(а): Пт июл 21, 2023 1:26 pm Понимаете вероломство ?
О замене цикла мы сказали две страницы назад.

Если мы этот скрипт переписывать начнём, то там вообще в пять строчек все сделать можно.

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 3:32 pm
alex_127
caltrain писал(а): Пт июл 21, 2023 1:26 pm
Uzito писал(а): Пт июл 21, 2023 10:46 am

6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.


Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
И вот вы попались с этим циклом.
Породы надо загрузить в set ,
Тогда вся проверка схлопывается до
return input in breed_set
O(1), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
https://wiki.python.org/moin/TimeComplexity
set worst case complexity is o(n)
so you got n^2 worst case!

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 3:39 pm
Poet77
Uzito писал(а): Пт июл 21, 2023 3:15 pm
caltrain писал(а): Пт июл 21, 2023 1:26 pm Понимаете вероломство ?
О замене цикла мы сказали две страницы назад.

Если мы этот скрипт переписывать начнём, то там вообще в пять строчек все сделать можно.
Так может напишите 5 строчек ?
Вот что оно должно делать :

The following small python program (see image) is designed to ask the user which breed of cat
they have (if any). The results are compared to the list of breeds held within breeds.txt (the file
has the format breedname,breedname2,breedname3...,...).

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 4:09 pm
Uzito
Poet77 писал(а): Пт июл 21, 2023 3:39 pm Так может напишите 5 строчек ?
Ну если совсем минимизировать и оставить только суть проблемы

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

try:
    with open("breeds.txt") as f:
        breeds = set(f.read().split(","))
except:
    print("Error loading list of breeds")
    breeds = set()
print("What breed of cat do you have:")
print("You have a known breed" if input() in breeds else "You do not have a known breed")

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 4:14 pm
caltrain
Poet77 писал(а): Пт июл 21, 2023 3:39 pm
Так может напишите 5 строчек ?
Вот что оно должно делать :

The following small python program (see image) is designed to ask the user which breed of cat
they have (if any). The results are compared to the list of breeds held within breeds.txt (the file
has the format breedname,breedname2,breedname3...,...).

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

import csv


def findBreed(breed: str) -> str:
    file = "breeds.txt"
    try:
        with open(file) as f: 
            for x in next(csv.reader(f)):
                if x == breed:
                    return f"found breed {breed}"
            return f"NOT found breed {breed}"
    except IOError as e:
        return e.message


if __name__ == "__main__":
    breed = input("What breed of cat do you have? ")
    print(findBreed(breed))
в принципе нужен какой-то красивый токенайзер/генератор, потому что это все скрытые формы загрузить в память и сделать split в массив

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 6:54 pm
kyk
alex_127 писал(а): Пт июл 21, 2023 3:32 pm https://wiki.python.org/moin/TimeComplexity
что значит "Amortized Worst Case" ? чем отличается от "Worst Case" ?

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 8:02 pm
caltrain
kyk писал(а): Пт июл 21, 2023 6:54 pm
alex_127 писал(а): Пт июл 21, 2023 3:32 pm https://wiki.python.org/moin/TimeComplexity
что значит "Amortized Worst Case" ? чем отличается от "Worst Case" ?
А для этого нужна последовательность. Так, каждый день, вы запускаете эту программу с вопросом "кого бы ещё приготовить?"

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 8:17 pm
alex_127
kyk писал(а): Пт июл 21, 2023 6:54 pm
alex_127 писал(а): Пт июл 21, 2023 3:32 pm https://wiki.python.org/moin/TimeComplexity
что значит "Amortized Worst Case" ? чем отличается от "Worst Case" ?
Там же ссылка есть - прямо имя колонки и есть ссылка.
https://en.wikipedia.org/wiki/Amortized_analysis

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 8:49 pm
caltrain
alex_127 писал(а): Пт июл 21, 2023 3:32 pm
caltrain писал(а): Пт июл 21, 2023 1:26 pm
И вот вы попались с этим циклом.
Породы надо загрузить в set ,
Тогда вся проверка схлопывается до
return input in breed_set
O(1), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
https://wiki.python.org/moin/TimeComplexity
set worst case complexity is o(n)
so you got n^2 worst case!
n^2 - это вы сгоряча?
смотрите по ссылке именно set
и там worst c case О(n), но поскольку данные human , то для большого массива не будет corner-case
при строительстве set данные будут равномерно раскидываться
ну, все поиски будут уже О(1)
питоновский set, да как и все остальные современные, вполне нормально написан https://stackoverflow.com/questions/394 ... mplemented
и ещё там комментариях обратите внимание, что "since Python sets use a hash table that resizes."

Re: Кто знает Python

Добавлено: Пт июл 21, 2023 8:54 pm
alex_127
caltrain писал(а): Пт июл 21, 2023 8:49 pm
alex_127 писал(а): Пт июл 21, 2023 3:32 pm

https://wiki.python.org/moin/TimeComplexity
set worst case complexity is o(n)
so you got n^2 worst case!
n^2 - это вы сгоряча?
смотрите по ссылке именно set
и там worst c case О(n), но поскольку данные human , то для большого массива не будет corner-case
при строительстве set данные будут равномерно раскидываться
ну, все поиски будут уже О(1)
питоновский set, да как и все остальные современные, вполне нормально написан https://stackoverflow.com/questions/394 ... mplemented
и ещё там комментариях обратите внимание, что "since Python sets use a hash table that resizes."
ну тут одного товарища зовут X Æ A-Xii
так что не вижу проблемы если имена бреедов что-то вроде слкдйфлксфглкещфгн
а вы делаете предположения что там за бриды.