Введение:
Идея этого поста состоит в том, чтобы помочь всем, кто думает начать кодирование, но не делает этого либо из-за того, что не знает, с чего начать, либо из-за того, что он перегружен количеством контента, доступного в Интернете. Моя основная задача здесь — помочь всем, кто заинтересован в написании кода на Python. Если вы хотите подробно изучить Python, Документация по Pythonотлично поможет вам.
Я попытался структурировать этот пост, чтобы представить переменные и какие данные (числа) обычно хранятся в них, как ими можно манипулировать (операторы). Затем мы продолжаем изучать строки и списки, как их использовать и обновлять. Наконец, мы говорим о том, как принимать решения в коде, используя операторы потока управления, а затем пример кода, и он заканчивается списком вопросов, с которых нужно начать. Давайте начнем и код!
Переменные:
Рассмотрим переменную как контейнер, содержащий данные, которые можно изменить по мере необходимости для решения проблемы. для практических целей предположим, что a = 10
в python создает переменную с именем a
и присваивает ей значение 10
, и такими переменными можно манипулировать в нашем коде для получения желаемых результатов.
Примечание. Python фактически не присваивает значение переменной, а вместо этого сохраняет ссылку на объект (значение) в переменной. есть отличный пост StackOverflow об этом, если вам интересно
Числа:
При решении той или иной задачи чаще всего используются два типа чисел. Это int и float.
- int — это целое число, которое может хранить такие значения, как
1, 5, 666, 0
- float может хранить значения с десятичными точками, такими как
0.0, 4.7, 999.22
Операторы:
5 операторов, которые чаще всего используются в кодировании, это +, -, *, /, %
, и они работают так же, как и в большинстве языков, +
используется для сложения двух переменных, -
для вычитания, *
для умножения, /
для деления и %
для получения остатка.
Примечание. Классическое деление всегда возвращает число с плавающей запятой в python,
//
можно использовать для деления пола, что устраняет дробную часть.a // b # output = 2
Строки:
Python имеет возможность манипулировать строками, строки обычно выражаются парой '
или "
.
new_string = 'this is a string' new_string = "this is a different string"
Примечание. Python — это язык с выводом типа, поэтому вам не нужно явно определять тип переменной. Он автоматически знает, что
'this is a string'
является строкой, и объявляет переменнуюnew_string
как строку.
Строки могут быть объединены с помощью + or *
new_string = 'ring!' * 3 # output = 'ring!ring!ring!' different_string = 'ring!ring!ring!' + 'hello' # output = 'ring!ring!ring!hello'
Объединение строковых переменных работает только с +
string1 = 'string' string2 = ' and different string' string1 + string2 # output = 'string and different string' string1 * string2 # error # TypeError: can't multiply sequence by non-int of type 'str'
Списки:
Список — это составной тип данных, который используется для группировки других значений.
new_list = [] # creates an empty list new_list = [1, 2, 3, 4] new_list = [1, 4.6, 'string']
Примечание. Списки обычно содержат значения одного и того же типа, но python позволяет списку хранить значения разных типов, как показано в строке 3 в приведенном выше примере.
Индексация и срезы
Для доступа к элементам в списке можно использовать индекс элемента. Обратите внимание, что индекс Python начинается с 0
при подсчете слева направо и с -1
при подсчете справа налево.
a = [1, 2, 3, 4, 5, 6] a[0] returns the first element i.e 1 a[1] returns 2 a[5] returns 6 negative index a[-1] = 6 a[-6] = 1 Here is a simple way to remember how indexing works +---+---+---+---+---+---+ | 1 | 2 | 3 | 4 | 5 | 6 | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
Примечание: функцию len() в python можно использовать для возврата длины списка или строки
a = [1, 2, 3] then len(a) = 3
.
Операции среза возвращают новый список, содержащий запрошенные элементы. Синтаксис a[start: end]
означает создание среза, начиная с индекса start
и заканчивая индексом end
.
Также обратите внимание, что индексация и нарезка являются общими как для строк, так и для списков.
a = [1, 2, 3, 4, 5, 6] a[1:3] #returns elements starting from 1(included) up to 3(excluded) # output [2, 3] a[2:] # returns elements starting from 2(included) to the end # output [3, 4, 5, 6] a[:4] # returns elements from the beginning to index 4(excluded) # output [1, 2, 3, 4] a[:] # returns everything from the beginning to the end [1, 2, 3, 4, 5, 6] a[-2:] # works with negative index as well # output [5, 6]
Обратите внимание, что начало всегда включается, а конец всегда исключается. Это гарантирует, что
a[:i] + a[i:]
всегда равноa
.
Списки относятся к изменяемому типу, т.е. их содержимое можно менять. Синтаксис list[index] = new_value
a[0] = 99 output of a = [99, 2, 3, 4, 5, 6] a.append(7) # add 7 to the list at the end output of a = [99, 2, 3, 4, 5, 6, 7]
Примечание. Строки являются неизменяемыми, т.е. их невозможно изменить.
string[ind] = 'c'
приводит к ошибке
Выражения потока управления:
if
, он позволяет программе принимать решение на основе условия.
if condition: do something else do something else if number < 0: print('Number is negative') else: print('Number is positive')
Примечание.
else
является необязательным и может использоваться только при необходимости.
for
, он позволяет программе перебирать последовательность, например список или строку.
new_list = [1, 2, 3, 4, 5] for item in new_list: print(item) # output when executed 1 2 3 4 5
Примечание. Одной из важных функций в Python является range()
. Она используется для создания арифметических прогрессий. На данный момент предположим, что range()
можно использовать для перебора последовательности чисел (см. пример ниже), более подробную информацию и другие варианты использования можно найти здесь.
for i in range(5): print(i) # output 0 1 2 3 4
Обратите внимание, что диапазон начинается с 0
Кодирование вопроса с использованием вышеуказанных понятий
Q1) Даны два массива A и B, содержащие неотрицательные целые числа, задача состоит в том, чтобы вычислить произведение максимального элемента массива большего размера и минимального элемента массива меньшего размера. т. е. если размер A › B, то найдите максимум в A и минимум в B и верните продукт. Предположим, всегда гарантируется, что размеры массивов различны, и самый большой элемент в любом из массивов ≤ 9999.
Задержитесь здесь и подумайте, как можно минимизировать этот код.
Q2) Для заданного массива найдите максимум в первой половине и максимум во второй половине (попробуйте решить этот вопрос, используя срезы). Предположим, что массив всегда четного размера.
Несколько практических вопросов:
Я составил список вопросов, которые могут стать хорошей отправной точкой.
- https://leetcode.com/problems/plus-one/
- https://leetcode.com/problems/merge-sorted-array/
- https://leetcode.com/problems/valid-palindrome/
- https://leetcode.com/problems/contains-duplicate/
- https://leetcode.com/problems/длина-последнего-слова/
- https://leetcode.com/problems/remove-duplicates-from-sorted-array/
- https://leetcode.com/problems/add-digits/
- https://leetcode.com/problems/pascals-треугольник/
- https://leetcode.com/problems/excel-номер-столбца-листа/