Кто знает Python

Аватара пользователя
Mad Hatter
⭐ Top 5 most interesting users
Reactions: 2019
Сообщения: 10267
Зарегистрирован: Пн июн 13, 2022 7:22 am

Re: Кто знает Python

Сообщение Mad Hatter »

Buddy писал(а): Пт июл 21, 2023 6:31 am Eсли использовать

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

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

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

test.close()
, а то утечка памяти на этот файл. Tак как файлы бывают разные. Я помню это в Жабе такое же вроде.
Да, with с файлом - стандартная фича питоновского кода
1 Изображение
Bobeg
Reactions: 2537
Сообщения: 16758
Зарегистрирован: Ср июн 15, 2022 4:01 am

Re: Кто знает Python

Сообщение Bobeg »

WebFunk писал(а): Пт июл 21, 2023 7:20 am Это называется не "код ревью", а "найдите проблемы в коде для проверки вас на вшивость". Код на ревью посылается после прохождения всех тестов, во время которых все явные баги будут вычищены. Так принято в компаниях, иначе это просто неуважение к коллегам.
Во. Мудро
Poet77
Reactions: 403
Сообщения: 1029
Зарегистрирован: Вт июн 14, 2022 10:26 pm

Re: Кто знает Python

Сообщение 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 КБ) 384 просмотра
Последний раз редактировалось Poet77 Пт июл 21, 2023 11:22 am, всего редактировалось 1 раз.
Аватара пользователя
Uzito
⭐ Top 5 most interesting users
Reactions: 1451
Сообщения: 6177
Зарегистрирован: Пт июн 24, 2022 1:35 pm

Re: Кто знает Python

Сообщение Uzito »

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

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


Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
Последний раз редактировалось Uzito Пт июл 21, 2023 12:28 pm, всего редактировалось 1 раз.
alex_127
Reactions: 1331
Сообщения: 6204
Зарегистрирован: Ср июн 15, 2022 9:44 am

Re: Кто знает Python

Сообщение 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+
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
alex_127
Reactions: 1331
Сообщения: 6204
Зарегистрирован: Ср июн 15, 2022 9:44 am

Re: Кто знает Python

Сообщение alex_127 »

Uzito писал(а): Пт июл 21, 2023 10:46 am
Poet77 писал(а): Пт июл 21, 2023 10:34 am Так нормально ?
6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.
цикл фор в питоне (которого я не знаю) имеет синтах елсе :-)
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Bobeg
Reactions: 2537
Сообщения: 16758
Зарегистрирован: Ср июн 15, 2022 4:01 am

Re: Кто знает Python

Сообщение Bobeg »

Он над нами издеваеца!
Ну сумасшедший, шо возьмешь
Аватара пользователя
Uzito
⭐ Top 5 most interesting users
Reactions: 1451
Сообщения: 6177
Зарегистрирован: Пт июн 24, 2022 1:35 pm

Re: Кто знает Python

Сообщение Uzito »

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

Ну тогда нужно добавить break чтобы не гнать по всему списку
caltrain
Reactions: 32
Сообщения: 180
Зарегистрирован: Чт авг 18, 2022 9:28 pm

Re: Кто знает Python

Сообщение 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), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
Bobeg
Reactions: 2537
Сообщения: 16758
Зарегистрирован: Ср июн 15, 2022 4:01 am

Re: Кто знает Python

Сообщение 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
Не обязательно грузить в лист штоб сработало.
Аватара пользователя
Uzito
⭐ Top 5 most interesting users
Reactions: 1451
Сообщения: 6177
Зарегистрирован: Пт июн 24, 2022 1:35 pm

Re: Кто знает Python

Сообщение Uzito »

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

Если мы этот скрипт переписывать начнём, то там вообще в пять строчек все сделать можно.
alex_127
Reactions: 1331
Сообщения: 6204
Зарегистрирован: Ср июн 15, 2022 9:44 am

Re: Кто знает Python

Сообщение 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!
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Poet77
Reactions: 403
Сообщения: 1029
Зарегистрирован: Вт июн 14, 2022 10:26 pm

Re: Кто знает Python

Сообщение 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...,...).
Вложения
Python_Code.jpg
Python_Code.jpg (96.35 КБ) 335 просмотров
Аватара пользователя
Uzito
⭐ Top 5 most interesting users
Reactions: 1451
Сообщения: 6177
Зарегистрирован: Пт июн 24, 2022 1:35 pm

Re: Кто знает Python

Сообщение 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")
1 Изображение
caltrain
Reactions: 32
Сообщения: 180
Зарегистрирован: Чт авг 18, 2022 9:28 pm

Re: Кто знает Python

Сообщение 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 в массив
kyk
Reactions: 545
Сообщения: 6995
Зарегистрирован: Ср июн 15, 2022 6:54 pm

Re: Кто знает Python

Сообщение kyk »

alex_127 писал(а): Пт июл 21, 2023 3:32 pm https://wiki.python.org/moin/TimeComplexity
что значит "Amortized Worst Case" ? чем отличается от "Worst Case" ?
caltrain
Reactions: 32
Сообщения: 180
Зарегистрирован: Чт авг 18, 2022 9:28 pm

Re: Кто знает Python

Сообщение 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" ?
А для этого нужна последовательность. Так, каждый день, вы запускаете эту программу с вопросом "кого бы ещё приготовить?"
alex_127
Reactions: 1331
Сообщения: 6204
Зарегистрирован: Ср июн 15, 2022 9:44 am

Re: Кто знает Python

Сообщение 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
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
caltrain
Reactions: 32
Сообщения: 180
Зарегистрирован: Чт авг 18, 2022 9:28 pm

Re: Кто знает Python

Сообщение 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."
alex_127
Reactions: 1331
Сообщения: 6204
Зарегистрирован: Ср июн 15, 2022 9:44 am

Re: Кто знает Python

Сообщение 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
так что не вижу проблемы если имена бреедов что-то вроде слкдйфлксфглкещфгн
а вы делаете предположения что там за бриды.
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Ответить