Как научиться решать задачки на python?



@bahridinovf

Здравствуйте!
В свои 33 года решил учить программирования)
Начал учить пайтон. Проходим семинары и дадут задачки.
Проблема:
Например есть задача: Реализуйте алгоритм перемешивания списка. Без функции shuffle из модуля random
и я не знаю как подходить к этой задаче Я просто не могу понять с рисовать под них алгоритм. А если понимаю как создать алгоритм я смогу писать код, кривой но хоть что то
от того, что не могу понять, ухожу в отчаяния. Может мне дополнительно, что то учить еще?
Можете посоветоваться мне как выйти из этого ситуации. ☹️
По математики не силен ((
Может мне где то найти миллион задач и найти решения + разбираться как люди решали и пытаться понять логику дале повторит уже своим кодом и где то что то изменить.
Подскажите пожалуйста как мне поступить лучше. Спасибо.


Решения вопроса 0


Ответы на вопрос 6



@HemulGM

Что учить дополнительно? Логику что ли?
Неужели сложно обозначить шаги для решения задачи?
Нужно перемешать список. Что такое перемешать список? Это сделать так, чтобы элементы были на случайных местах. Что нужно сделать чтоб они были на случайных местах? Взять элемент и поменять его местами со случайным элементом. Что нужно чтоб выбрать случайное место? Взять функцию генерации случайных чисел и обозначить границы выборки случайных чисел.
Итого:

  1. Запускаем цикл от первого элемента до последнего
  2. Берём элемент, получаем случайное число в пределах размера массива
  3. Меняем местами текущий элемент и элемент под случайным числом

ВСЁ
И это работает почти с любой задачей



@Griboks

Чётко и ясно определите цель, затем декомпозируйте задачу до тех пор, пока логика каждой подзадачи не станет вам ясна.



@mayton2019

По математики не силен ((

Не переживай сильно. Для 80% современных задач разработки тебе понадобиться только школьная математика.
Сложить умножить и процент посчитать. Всё остальное — технический дискурс что делать и как делать.

Высокая наука ушла в области datascience, AI, quantum-computing, и всякие формальные логические (тьфу) системы где теоретики занимаются онаниз…. эээ короче фигнёй страдают.

Что тебе понадобиться на самом деле. Структуры python. Библиотеки. Основы мульипоточки. Работа с файлами и сетью. Там не бох весть какая наука. Школьники разбираются. Вот… тут каждый день кодят дискорд и телеграм ботов.

Еще обрати внимание на операции со строками. Строки — основа современного бизнес-кода. Сравнение строк. Подстроки. Замены. Поиск по регулярке. Это должно быть выучено как молитва. Очень часто программист хорошо умеющий работать со строками выкрутится из любой ситуации. Распарсит json и так далее вручную.



@kaka888

Для начала неплохо было бы разобраться с русским языком, ошибки чуть ли не в каждом предложении.
По программированию рекомендую решать для начала самые простые задачи: на codewars.com такие задачи обозначены уровнем 8 kyu. Когда будете уверенно решать 8 kyu, можно будет переходить на 7 kyu и так далее.



@duff89

Говорят, что у писателей есть проблема чистого листа, когда трудно вообще начать писать. Решение простое: нужно написать «В общем ….» или «Короче блин, произошло следующее ….» . И дальше писать станет проще
Я думаю аналогию Вы поняли, я лично в таких случаях просто рисую на бумаге схематично, что у меня есть и что мне нужно получить, потом расписываю более подробно и так далее. Становится понятнее

Также рекомендую иногда решать те же задачки с codewars.com/ или других ресурсов



@Jack444

Можно без модуля рандом зарандомить.

from time import time

lister = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

def mix_list(old: list) -> list:
    new = []
    while old:
        x = str(time()).split('.')[1]
        x = list(map(int, [x[0], x[-1]]))
        x = x[0] if x[0] <= x[1] else x[1]
        if x > len(old)-1:
            new.append(old.pop(0))
        else:
            new.append(old.pop(x))
    return new

lister = mix_list(lister)
print(lister)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *