Homework#113
Conversation
| """ | ||
|
|
||
| def check_string(first_string, second_string): | ||
| if type(first_string) and type(second_string) != str: |
There was a problem hiding this comment.
Тут ты тип first_string не проверяешь, ты по сути проверяешь True оно или False)
| if second_string == 'learn': | ||
| return 3 | ||
| elif len(first_string) > len(second_string): | ||
| return 2 |
There was a problem hiding this comment.
а зачем тут дополнительная вложенность? все будет прекрасно работать с одной вложенностью)
| def get_total_sold(items_sold): | ||
| summ = 0 | ||
| for item in items_sold: | ||
| summ += item |
There was a problem hiding this comment.
удобнее было бы использовать функцию sum() тут)
| def get_average_sold(items_sold): | ||
| summ = 0 | ||
| for item in items_sold: | ||
| summ += item |
| def total_sold_all_item(products): | ||
| all_summ = 0 | ||
| for product in products: | ||
| all_summ += get_total_sold(product['items_sold']) |
There was a problem hiding this comment.
а тут попробуй использовать генератор списков в связке с функцией sum . Это не обязательно, задание со звездочкой
| def average_sold_all_item(products): | ||
| all_summ = 0 | ||
| for product in products: | ||
| all_summ += get_average_sold(product['items_sold']) |
There was a problem hiding this comment.
чтобы получить среднее по всем средним недостаточно просто их сложить)
| def average_sold_all_item(products): | ||
| all_summ = 0 | ||
| for product in products: | ||
| all_summ += get_average_sold(product['items_sold']) |
There was a problem hiding this comment.
чтобы получить среднее по всем средним недостаточно просто их сложить)
| while True: | ||
| question = input('Введите вопрос: ') | ||
| answer = questions_and_answers.get(question) | ||
| if answer: |
There was a problem hiding this comment.
get по дефолту возвращает None. None принято проверять как is None или is not None
| else: | ||
| return price - (price * discount / 100) | ||
| except (ValueError, TypeError): | ||
| print('Ошибка, переданы не верные данные!') |
There was a problem hiding this comment.
- строки с 24 по 30 не могут вызвать ни ValueError ни TypeError, не смысла их запихивать в try except. Туда нужно класть только те строки, в которых ты ожидаешь увидеть ошибку
- Тут ты отлавливаешь две ошибки разом с одним сообщением, чаще всего это не очень удобно, потому что будет сложно понять где именно произошла ошибка и что это была за ошибка
| text_message = update.message.text.split() | ||
| date_today = date.today().strftime("%Y/%m/%d") | ||
|
|
||
| fn = getattr(ephem, text_message[1]) |
There was a problem hiding this comment.
а что если нужно планеты не будет? Спойлер: у getattr есть третий аргумент, на основе которого можно будет обработать этот кейс
| """ | ||
| def distribute_career(age): | ||
| if age < 1.5: | ||
| return print('Ты совсем еще маленький') |
There was a problem hiding this comment.
Нет никакого смысла возвращать возвращаемое значение принта (там None кажется). Или вернуть строку или вызвать print.
| elif 7 < age <= 18: | ||
| return print('Учиться в школе') | ||
| elif 18 < age <= 23: | ||
| return print('Учиться в ВУЗе') |
|
|
||
| def check_string(first_string, second_string): | ||
| if type(first_string) and type(second_string) != str: | ||
| if isinstance(first_string, str) and isinstance(second_string, str) is not True: |
There was a problem hiding this comment.
Тут ты проверяешь только второй аргумент на то что он не строка
Правильным вариантом будет сделать так:
if not isinstance(first_string, str) or not isinstance(second_string, str) :
подумай почему так правильно, поэксперементируй с разными вариантами, важно чтобы ты понял как это все вместе работает
| item_summ_sold = get_total_sold(product['items_sold']) | ||
| items_summ.append({product['product']: item_summ_sold}) | ||
| return items_summ | ||
| return [{product['product']: sum(product['items_sold'])} for product in products] |
| question = input('Введите вопрос: ') | ||
| answer = questions_and_answers.get(question) | ||
| if answer: | ||
| if not answer is None: |
There was a problem hiding this comment.
if not answer is not None: . Да, иногда путаешься во всех этих not is и т.д, со временем привыкнешь)
| except TypeError: | ||
| return print('Ошибка, передан не верный тип!') | ||
| except ValueError: | ||
| return print('Ошибка, переданы не верные данные!') |
There was a problem hiding this comment.
print() не нужно возвращать:
- print - это функция, которая что-то делает внутри и возвращает None
- Она возвращает None потому что любая функция всегда что-то должна возвращать и если внутри функции не указать return, то по дефолту будет возвращаться None
- Итого тут есть два варианта: ты либо печатаешь сначала и потом явно возвращаешь None (сели написать просто return без ничего, то функция вернет None тоже), либо возвращаешь строку и принтишь ее вне функции
|
|
||
| if fn == 'err': | ||
| return update.message.reply_text('Допущена ошибка вводе планеты.') | ||
|
|
There was a problem hiding this comment.
Я бы рекомендовал третьим аргументом передвать None тут) семантически None - это ничего, как раз подходит сюда
И обрати внимание на название переменных, из них не очень понятно что хранится внутри
No description provided.