bahridinovf
@bahridinovf
Не кто

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

Здравствуйте!
В свои 33 года решил учить программирования)
Начал учить пайтон. Проходим семинары и дадут задачки.
Проблема:
Например есть задача: Реализуйте алгоритм перемешивания списка. Без функции shuffle из модуля random
и я не знаю как подходить к этой задаче Я просто не могу понять с рисовать под них алгоритм. А если понимаю как создать алгоритм я смогу писать код, кривой но хоть что то
от того, что не могу понять, ухожу в отчаяния. Может мне дополнительно, что то учить еще?
Можете посоветоваться мне как выйти из этого ситуации. ☹️
По математики не силен ((
Может мне где то найти миллион задач и найти решения + разбираться как люди решали и пытаться понять логику дале повторит уже своим кодом и где то что то изменить.
Подскажите пожалуйста как мне поступить лучше. Спасибо.
  • Вопрос задан
  • 934 просмотра
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Что учить дополнительно? Логику что ли?
Неужели сложно обозначить шаги для решения задачи?
Нужно перемешать список. Что такое перемешать список? Это сделать так, чтобы элементы были на случайных местах. Что нужно сделать чтоб они были на случайных местах? Взять элемент и поменять его местами со случайным элементом. Что нужно чтоб выбрать случайное место? Взять функцию генерации случайных чисел и обозначить границы выборки случайных чисел.
Итого:
  1. Запускаем цикл от первого элемента до последнего
  2. Берём элемент, получаем случайное число в пределах размера массива
  3. Меняем местами текущий элемент и элемент под случайным числом

ВСЁ
И это работает почти с любой задачей
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
@kaka888
C, C++, Qt, Python Flask, MySQL, Lua
Для начала неплохо было бы разобраться с русским языком, ошибки чуть ли не в каждом предложении.
По программированию рекомендую решать для начала самые простые задачи: на codewars.com такие задачи обозначены уровнем 8 kyu. Когда будете уверенно решать 8 kyu, можно будет переходить на 7 kyu и так далее.
Ответ написан
Комментировать
Griboks
@Griboks
Чётко и ясно определите цель, затем декомпозируйте задачу до тех пор, пока логика каждой подзадачи не станет вам ясна.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
По математики не силен ((

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

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

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

Еще обрати внимание на операции со строками. Строки - основа современного бизнес-кода. Сравнение строк. Подстроки. Замены. Поиск по регулярке. Это должно быть выучено как молитва. Очень часто программист хорошо умеющий работать со строками выкрутится из любой ситуации. Распарсит json и так далее вручную.
Ответ написан
@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)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы