Провоторова Алина python разработчик собеседование

Поділитися
Вставка
  • Опубліковано 27 вер 2024
  • Активность Олега в теме активного обмена опытом между разработчиками: t.me/it_horizo...
    t.me/UA-camPr...
    Чат для общения pyhton разработчиков и им сочуствующих. Свободное общение, тестовые и вопросы с собесов и прочее. Заходите, там вам рады.
    Поддержать канал: www.tinkoff.ru...
    Обычно денежка идёт на книжки про питончик. Но иногда на светлое и тёмное.
    Если Тиньков не даёт перечислить, стукните в личку телеги andpronin, придумаем что нибудь
    Виш лист
    Хорошие книги по Питончику, которые могу рекомендовать (и хочу купить с вашей помощью).
    Изучаем Python. Двухтомник. Марк Лутц. Очень подробно и структурно (Хочу дождаться 6го издания.. )
    • Изучаем Python с Марко...
    Читаем и разбираем ее тут
    Куплено (огромное спасибо зрителям)
    Знакомство с Python | Бейдер Дэн (2023) - выглядит приятно для новичка
    Чистый Python. Тонкости программирования для профи | Бейдер Дэн (2022) - хорошо для продолжения
    Высоконагруженные приложения. Программирование, масштабирование, поддержка | Клеппман Мартин
    Python. К вершинам мастерства | Рамальо Лучано - 2е издание - сложно для новичка, но интересно
    Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура -- хорошо про то, когда какой фреймворк применять
    Видимо, дальше появтся еще нескромные желания. Но пока - так
    Моя тележка andpronin -- стучите, если что.
    Мой канал про обучению python с нуля и до мидла Андрей+=Пронин
    / @pypronin
    Я в других сетях
    🔗Вконтакте: CaptPronin
    🔗Дзен: zen.yandex.ru/...
    #python #питон #программирование #Андрей_Пронин #собеседование #

КОМЕНТАРІ • 32

  • @AndyPronin
    @AndyPronin  Рік тому +2

    Активность Олега в теме активного обмена опытом между разработчиками: t.me/it_horizon_club/6

  • @TheDoartLos
    @TheDoartLos Рік тому

    Спасибо, освежил память с регулярками, можно просто захардкодить по убыванию словарь {арабское число: римское число} (включая случаи с 4, 9, 40 и тд)
    И реугляркой проходишься по key словаря уменьшая num не оно не будет равно 0
    Вкусная задачка, особенно когда уверен что оч легко можно решить регуляркой и вспоминаешь пол часа как правильно прописать ее)

  • @ssharp666
    @ssharp666 Рік тому +1

    Ура ждём 🎉😮

  • @beardedman721
    @beardedman721 Рік тому +2

    Ну почему нельзя тупо взять и добавить в словарь к остальным символам {"CM":900, "CD":400, "XC":90, "XL":40, "IX":9,"IV":4} и обрабатывать точно также, как и начинала? 🤷🏻‍♂️ зачем создавать себе сложности, и изобретать велосипед с bad_number =[] ..

  • @Taron8117
    @Taron8117 Рік тому +2

    Думаю нужно пересмотреть формат собесов. Первая часть вопросы по питону, может по джанго, а потом задача хитрая, но не настолько муторная. Так можно шире оценить навыки человека. Имхо.

  • @marat_shaydulin
    @marat_shaydulin Рік тому +3

    rom_sym = {
    1: "I",
    5: "V",
    10: "X",
    50: "L",
    100: "C",
    500: "D",
    1000: "M",
    }
    def convert(num):
    ans = ""
    divisor = 1000
    while divisor:
    res, num = divmod(num, divisor)
    if res < 4:
    ans += rom_sym[divisor] * res
    elif res == 4:
    ans += rom_sym[divisor] + rom_sym[divisor * 5]
    elif res == 9:
    ans += rom_sym[divisor] + rom_sym[divisor * 10]
    else:
    ans += rom_sym[divisor * 5] + rom_sym[divisor] * (res - 5)
    divisor //= 10
    return ans

    • @vladislavmamedov4513
      @vladislavmamedov4513 Рік тому

      ты волшебник!

    • @Fantomzer
      @Fantomzer 11 місяців тому

      Для чисел от 4000 в условие надо дописать
      elif divisor == 1000:
      ans += rom_sym[divisor] * res
      В условиях сравнения с 4 и 9 надо дописать
      and divisor != 1000

  • @milov52
    @milov52 Рік тому

    convert_dict = {
    1000: 'M',
    900: 'CM',
    500: 'D',
    400: 'CD',
    100: 'C',
    90: 'XC',
    50: 'L',
    40: 'XL',
    10: 'X',
    9: 'IX',
    5: 'V',
    4: 'IV',
    1: 'I'
    }
    def convert(number : int):
    result = ''
    for key, value in convert_dict.items():
    n1, n2 = divmod(number, key)
    if n1 >= 1:
    result += n1*value
    number = n2
    return result
    как то так получилось, вроде правильно

  • @xewuss3750
    @xewuss3750 Рік тому +1

    "Легион в Древнем Риме состоял из 2000 - 10 000", как же их считали?
    Хороших решений не придумал и в гугле не нашёл.
    Я б сделал 4 списка и из них брал значения.

  • @olegmitaev3255
    @olegmitaev3255 Рік тому

    Задание сложное.

  • @beardedman721
    @beardedman721 Рік тому

    27:04 как она сделала символ >= ? 🤔

    • @ЗНАКОМЫЙСВАРЩИК
      @ЗНАКОМЫЙСВАРЩИК Рік тому

      Ого

    • @Spaut
      @Spaut Рік тому

      Включена поддержка лигатур в PyCharm, с некоторыми шрифтами такое работает, заменяет != на ≠ и прочие >= на ≥

    • @beardedman721
      @beardedman721 Рік тому

      @@Spaut хм, не знал, что так можно)) Спасибо за ответ 👍🏻

  • @without-effects
    @without-effects Рік тому

    Добрый день как попасть на собес?

    • @AndyPronin
      @AndyPronin  Рік тому

      Студент практикума?

    • @without-effects
      @without-effects Рік тому

      @@AndyPronin нет, яндекс практикум?

    • @AndyPronin
      @AndyPronin  Рік тому +1

      @@without-effects ага. Можно поступить, отучиться и придти) у меня и скидка есть. А второй вариант - скоро будет розыгрыш среди подписчиков. Вот тут t.me/UA-camPronin

  • @7IdE
    @7IdE Рік тому +3

    Я просто всей душой ненавижу эти 2 задачи на римские цифры: они ужасные и отвратительны, поэтому я могу только лишь посочувствовать девушке.
    Однако: Олег понимал, что это задача слегка отбитая, поэтому он сразу же дал алгоритм к ее решению...и она после этого не решила задачу. А это прям совсем нехорошо.
    Также крайне сильно триггернуло ее постоянные "я правильно делаю?" - то есть, постоянно ищет поддержку и одобрение, то есть нет самоходности.
    Но, в целом, код вроде бы норм пишет.

  • @admi1986
    @admi1986 Рік тому +1

    Подумал, что сам решу быстро, но не сразу получилось
    def convert_to_roman(num: int):
    result = data[0][0] * (num // data[0][1])
    num = num % data[0][1]
    for i in range(2, 7, 2):
    r = num // data[i][1]
    num = num % data[i][1]
    if r == 9:
    result += data[i][0] + data[i-2][0]
    elif r == 4:
    result += data[i][0] + data[i - 1][0]
    elif r < 4:
    result += data[i][0] * r
    else:
    result += data[i - 1][0] + data[i][0] * (r - 5)
    return result
    data = (('M', 1000), ('D', 500), ('C', 100), ('L', 50), ('X', 10), ('V', 5), ('I', 1))

  • @AlexeySmykov
    @AlexeySmykov Рік тому

    Метод в лоб, конечно, но пока ничего лучше не придумал
    rim_dict = {1000: 'M', 900: 'CM', 500: 'D', 400: 'CD',
    100: 'C', 90: 'XC', 50: 'L', 40: 'XL', 10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I'}
    def turn_to_arabic(num: int):
    result = num * 'I'
    for k, v in rim_dict.items():
    result = result.replace('I'*k, v)
    return result

  • @TVOREC5530XM
    @TVOREC5530XM Рік тому

    def arabic_to_roman(number: int) -> str:
    roman_numerals = {
    1000: 'M',
    900: 'CM',
    500: 'D',
    400: 'CD',
    100: 'C',
    90: 'XC',
    50: 'L',
    40: 'XL',
    10: 'X',
    9: 'IX',
    5: 'V',
    4: 'IV',
    1: 'I'
    }
    roman = ""
    for value, symbol in roman_numerals.items():
    while number >= 1:
    roman += symbol
    number -= value
    return roman
    как так она решается ) не так сложно в целом ...

  • @LamerPRO_YouTube
    @LamerPRO_YouTube Рік тому +1

    Боже...бедная девушка! Мне ее почему то жалко стало.

  • @angel-astrocrafter
    @angel-astrocrafter Рік тому +5

    Что я понял из видео, что возможно правильно что оставил программирование, когда никто меня не брал. Ничего бы из этого не вытянул и выгорел быстро.

  • @zakirovio
    @zakirovio Рік тому

    помню решил эту задачу на лите и увидев тут, решил попробовать еще раз) не получилось с ходу, некоторые не правильно конвертирует) думаю на собесе, было бы в двойне тяжелее разобраться) пойду добивать)

  • @ЗНАКОМЫЙСВАРЩИК

    Приятная девушка! Желаю чтобы у нее все получилось!

  • @bomarshee
    @bomarshee Рік тому

    Как раз с leetcode задачка.

  • @ИльяЮдин-р1у
    @ИльяЮдин-р1у Рік тому

    Один из вариантов решения:
    *Сверху ещё добавить dict для всех возможных вариантов римских букв (включая 4, 9, 40, 90 и т.д.). Ключ - арабская цифра, значение - римская буква (или 2 буквы). И вот такая функция всё это переберёт:
    def arabic_to_roman(arab_num: int) -> str:
    result_rome: str = ""
    if arab_num = 5000:
    raise ValueError("Incorrect value. Number should be from 1 to 4999")
    str_num = str(arab_num)
    for i, v in enumerate(str_num):
    check_num: int = int(v) * 10 ** (len(str_num) - 1 - i)
    for key, value in rome_arab_match.items():
    count: int = check_num // key
    if count >= 1:
    result_rome += value * count
    check_num: int = check_num % key
    continue
    if check_num == 0:
    break
    return result_rome

    • @anton_1992
      @anton_1992 Рік тому

      не корректно работает

  • @Konstantin_Stalnov
    @Konstantin_Stalnov Рік тому

    Олегу - Респект! Молодец!

  • @EduardMalinochka
    @EduardMalinochka Рік тому +2

    Видно, что расстроилась, но ничего страшного в не решении такой задачки нет.
    Если и будет лайвкод на собеседовании, то задача с большой вероятностью будет значительно проще. Здесь все таки не тривильная, и как основной алгоритм изобрести, и как эджи решить. Без задроченного литкода ее быстро не решить.
    А увидеть слабое место на собеседовании это всегда очень ценный опыт. Сильно мотивирует эту слабость закрыть. Удачи