Да, with с файлом - стандартная фича питоновского кодаBuddy писал(а): ↑Пт июл 21, 2023 6:31 am Eсли использоватьбезКод: Выделить всё
test = open("test.txt", "wb")
то нужно закрывать файл после чтенияКод: Выделить всё
with
, а то утечка памяти на этот файл. Tак как файлы бывают разные. Я помню это в Жабе такое же вроде.Код: Выделить всё
test.close()
Кто знает Python
- Mad Hatter
- ⭐ Top 5 most interesting users
- Reactions: 2019
- Сообщения: 10267
- Зарегистрирован: Пн июн 13, 2022 7:22 am
Re: Кто знает Python
Re: Кто знает Python
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.
Так нормально ?
Последний раз редактировалось Poet77 Пт июл 21, 2023 11:22 am, всего редактировалось 1 раз.
- Uzito
- ⭐ Top 5 most interesting users
- Reactions: 1451
- Сообщения: 6177
- Зарегистрирован: Пт июн 24, 2022 1:35 pm
Re: Кто знает Python
6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.
Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
Последний раз редактировалось Uzito Пт июл 21, 2023 12:28 pm, всего редактировалось 1 раз.
Re: Кто знает Python
1 - use proper access mode when opening file, not wb+Poet77 писал(а): ↑Пт июл 21, 2023 10:34 amBobeg писал(а): ↑Пт июл 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
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Re: Кто знает Python
цикл фор в питоне (которого я не знаю) имеет синтах елсеUzito писал(а): ↑Пт июл 21, 2023 10:46 am6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
- Uzito
- ⭐ Top 5 most interesting users
- Reactions: 1451
- Сообщения: 6177
- Зарегистрирован: Пт июн 24, 2022 1:35 pm
Re: Кто знает Python
Век живи, век учись.
Ну тогда нужно добавить break чтобы не гнать по всему списку
Re: Кто знает Python
И вот вы попались с этим циклом.Uzito писал(а): ↑Пт июл 21, 2023 10:46 am
6. Во-первых, нужно исправить ошибку форматирования на строке 25 и 26 - нужно добавить 1 tab на каждую чтобы else был на том же уровне что предыдущий if. После исправления останется проблема что на каждую не совпадающую породу из списка будет выдаваться сообщение. Поэтому менять метод проверки целиком.
Исправляютсь. Между строкой 24 и 25 поставить break, тогда сообщение об не найденой породе будет только если ничего не найдено и цикл не будет гоняться по всему списку после нахождения породы.
Породы надо загрузить в set ,
Тогда вся проверка схлопывается до
return input in breed_set
O(1), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
Re: Кто знает Python
List тоже подлерживает incaltrain писал(а): ↑Пт июл 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), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
Не обязательно грузить в лист штоб сработало.
- Uzito
- ⭐ Top 5 most interesting users
- Reactions: 1451
- Сообщения: 6177
- Зарегистрирован: Пт июн 24, 2022 1:35 pm
Re: Кто знает Python
О замене цикла мы сказали две страницы назад.
Если мы этот скрипт переписывать начнём, то там вообще в пять строчек все сделать можно.
Re: Кто знает Python
https://wiki.python.org/moin/TimeComplexitycaltrain писал(а): ↑Пт июл 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), это как раз выпускники колледжей могут помнить
Понимаете вероломство ?
set worst case complexity is o(n)
so you got n^2 worst case!
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Re: Кто знает Python
Так может напишите 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 (96.35 КБ) 335 просмотров
- Uzito
- ⭐ Top 5 most interesting users
- Reactions: 1451
- Сообщения: 6177
- Зарегистрирован: Пт июн 24, 2022 1:35 pm
Re: Кто знает Python
Ну если совсем минимизировать и оставить только суть проблемы
Код: Выделить всё
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
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))
Re: Кто знает Python
А для этого нужна последовательность. Так, каждый день, вы запускаете эту программу с вопросом "кого бы ещё приготовить?"
Re: Кто знает Python
Там же ссылка есть - прямо имя колонки и есть ссылка.
https://en.wikipedia.org/wiki/Amortized_analysis
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео
Re: Кто знает Python
n^2 - это вы сгоряча?alex_127 писал(а): ↑Пт июл 21, 2023 3:32 pmhttps://wiki.python.org/moin/TimeComplexity
set worst case complexity is o(n)
so you got n^2 worst case!
смотрите по ссылке именно 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
ну тут одного товарища зовут X Æ A-Xiicaltrain писал(а): ↑Пт июл 21, 2023 8:49 pmn^2 - это вы сгоряча?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!
смотрите по ссылке именно 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."
так что не вижу проблемы если имена бреедов что-то вроде слкдйфлксфглкещфгн
а вы делаете предположения что там за бриды.
К маю в распоряжении команды было 38,5 URL-адресов, ведущих на различные видео