Возможно, import csv - это намек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())
кроме того с 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 минут должно всё работать
или чел смотрит на техники программирования?
или это вообще в чате надо было печатать, хорошо что не гугль-докс?