Когда я начинаю изучать Python, мне кажется полезным сравнить его с текущим языком, который я уже знаю, в данном случае это будет Javascript. После того, как я изучил основы переменных Python, функций и операторов if/else (ознакомьтесь с этим постом в блоге, чтобы узнать больше об основах Python), следующим шагом было применить его в простой задаче, решив ее на Javascript, а затем закодируйте тот же ответ в Python, чтобы поэкспериментировать с различиями в синтаксисе.

Задача проста: определить минимальное расстояние между двумя повторяющимися элементами массива. Ссылка на задачу Hackerrank здесь: https://www.hackerrank.com/challenges/minimum-distances/problem

// Javascript solution
function minimumDistances(a) {
  let map = {}
  let results = []
  for (let i = 0; i<a.length; i++){
    let num = a[i]
    if(map[num] >= 0){
      results.push(i-map[num])
    }else{
      map[num] = i
    }
  }
  return results.length === 0? -1 : Math.min(...results)
}

# Python solution
def minimumDistances(a):
  map = {}
  results = []
  i = 0                     
  for num in a:
    if str(num) in map:                 
      results.append(i-map[str(num)])   
    else:
      map[str(num)] = i
    i += 1                              
  return -1 if len(results) == 0 else min(results)

Вот некоторые отличия, которые я понял:

  1. Блоки кода:
     – Javascript использует фигурные скобки {} (аналогично большинству языков)
     – Python использует выравнивание по табуляции для организации блоков кода (заставляет вас упорядочиваться по вкладкам)
  2. Объявление переменных:
    - Javascript требует тип переменной (Var/Let/Cons, подробности смотрите в этом блоге)
    - Python не требует типа переменной
  3. Цикл for:
     – В Javascript есть 3 типа циклов for (for, for..in, for..of)
     – В Python есть только цикл for…in (вам нужно указать счетчик вне цикла , аналогично циклу while в JS)
  4. Методы массива:
    — в Javascript есть метод «push» для добавления в конец
    — в Python есть метод «append» для добавления в конец
  5. Длина массива:
    — Javascript рассматривает длину как атрибут массива
    — Python предлагает метод для вычисления длины списка
  6. Условие оператора if/else:
    — Javascript требует, чтобы вы указали, что 0 является возможным значением
    — Python позволяет вам проверить существование
  7. Ссылка на объект/словарь:
     – Javascript позволяет вам динамически проверять число как ключ.
     – Python требует, чтобы вы преобразовали число в строку, чтобы проверить его как ключ.
  8. Тернарный:
    - Структура Javascript [условие]? [результат, если истина]:[результат, если ложь]
    - структура Python [результат, если истина], если [условие], иначе [результат, если ложь]

До сих пор кажется, что Javascript лучше, когда дело доходит до ссылки на информацию и содержит атрибуты со сложными типами данных (массивы/объекты), тогда как Python кажется более организованным/структурированным/согласованным с вычислениями и ссылками (например, длина, преобразование числа нанизывать и др.). Я буду делиться с вами новыми открытиями по мере продолжения изучения Python.