Если в условии нам нужно поймать промежуток от N до M значения, вместо размашистого:
можно написать:
if credit_rating > 120 and credit_rating <= 60:
можно написать:
if 60 <= credit_rating < 120:
Если вы работаете в PyCharm, то по неопытности можете столкнуться с таким предупреждением:
Дословный перевод выглядит так:
Проще (но длиннее) говоря, вы добавляете что то в список сразу после его инициализации, хотя можно сразу создать список не используя дополнительных элементов.
Рассмотрим два примера.
Пример попроще:
В этом случае можно 'ice cream' сразу объявить в списке:
Либо если вы ранее как то изменяли список, то метод
Пример посложнее:
Здесь можно не сразу догадаться как улучшить код, особенно на ранних этапах изучения. Например мы не сможем обратиться к
Исправляя предупреждение вы не предотвращаете какую то ошибку, но становитесь лучше как разработчик.
Multi-step list initialization can be replaced with a list literal
Дословный перевод выглядит так:
Многоступенчатая инициализация списка может быть заменена литералом списка
Проще (но длиннее) говоря, вы добавляете что то в список сразу после его инициализации, хотя можно сразу создать список не используя дополнительных элементов.
Рассмотрим два примера.
Пример попроще:
food = ['pizza', 'hamburger', 'hotdog', 'spaghetti']
food.append('ice cream')
В этом случае можно 'ice cream' сразу объявить в списке:
food = ['pizza', 'hamburger', 'hotdog', 'spaghetti', 'ice cream']
Либо если вы ранее как то изменяли список, то метод
append()
будет оправдан:food = ['pizza', 'hamburger', 'hotdog', 'spaghetti']
food.remove('hotdog')
food.append('ice cream')
Пример посложнее:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(5):
cache = [x[0], x[1], x[2]]
cache.append(0 if sum(cache) == 0 else 1)
Здесь можно не сразу догадаться как улучшить код, особенно на ранних этапах изучения. Например мы не сможем обратиться к
cashe
внутри списка. Но если немного углубиться в синтаксис, то мы узнаем что [x[0], x[1], x[2]]
это тоже что и x[:3]
. Следуя этому правилу, можно сократить код на одну строку:x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(5):
cache = x[:3] + [0 if sum(x[:3]) == 0 else 1]
Исправляя предупреждение вы не предотвращаете какую то ошибку, но становитесь лучше как разработчик.
Импорт директории, название которой начинается с цифр
Предположим что в файле
Мы хотим импортировать ее в файле
Получаем ошибку:
Для решения проблемы нам нужно воспользоваться стандартной библиотекой:
Good coding 👨🏻💻
Предположим что в файле
main.py
есть такая функция:def test():
print('I am a function!')
Мы хотим импортировать ее в файле
hello.py
из модуля 00_numbers
:from 00_numbers.main import test
Получаем ошибку:
SyntaxError: invalid decimal literal
Для решения проблемы нам нужно воспользоваться стандартной библиотекой:
import importlib
main = importlib.import_module('00_numbers.main')
main.test() # output: I am a function!
Good coding 👨🏻💻
🔍 Поиск среднего значения
Давайте представим, что у нас есть три случайных числа и нам нужно вывести то число, которое больше одного, но меньше второго — n1 < n2 < n3.
Можно это сделать с помощью условий:
А можно упростить себе жизнь:
Good coding 👨🏻💻
#sorted #list
Давайте представим, что у нас есть три случайных числа и нам нужно вывести то число, которое больше одного, но меньше второго — n1 < n2 < n3.
Можно это сделать с помощью условий:
v1 = int(input())
v2 = int(input())
v3 = int(input())
if (v2 < v1 < v3) or (v2 > v1 > v3):
print(v1)
elif (v1 < v2 < v3) or (v1 > v2 > v3):
print(v2)
else:
print(v3)
А можно упростить себе жизнь:
weights = sorted([v1, v2, v3])
print(weights[1])
Good coding 👨🏻💻
#sorted #list
🎵 Музыкальная задачка
Задача о которой идет речь тут.
Есть у нас такой код:
А вот это оказывается по смыслу такой же код:
Всё было понятно, кроме того, где хранится и как суммируется единичка с другой единичкой. А получается, что каждая итерация, которая возвращает единицу, по сути генерирует аргумент функции
Good coding 👨🏻💻
#for #sum
Задача о которой идет речь тут.
Есть у нас такой код:
a_minor_count = 0
for tone in accented_tones:
if tone in a_minor_main_tones:
a_minor_count += 1
А вот это оказывается по смыслу такой же код:
a_minor_count = sum(1 for tone in accented_tones if tone in a_minor_main_tones)
Всё было понятно, кроме того, где хранится и как суммируется единичка с другой единичкой. А получается, что каждая итерация, которая возвращает единицу, по сути генерирует аргумент функции
sum()
. То есть если цикл вернул 4 единицы, то это эквивалентно записи sum(1, 1, 1, 1)
.Good coding 👨🏻💻
#for #sum