Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (7)

Наибольший вклад в теги

Все теги (50)

Лучшие ответы пользователя

Все ответы (104)
  • Как на python3 сделать аналог cmd?

    @javedimka
    Хочу сока
    Используй словарь.
    На твоем же примере read 2017 admin
    Функции в примере просто будут выводить все переданные аргументы:
    def create(*args):
        print("'Create' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def read(*args):
        print("'Read' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def update(*args):
        print("'Update' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    
    def delete(*args):
        print("'Delete' Function with given args:")
        for arg in args:
            print('%8s' % (arg))
    
    # Словарь с функциями. Ключом является вводимая команда.
    options = {"create": create,  "read": read, "update": update, "delete": delete}
    
    # Входим в бесконечный цикл, программа не будет завершаться после выполнения
    # первой же введенной команды.
    while True:
        # Получаем строку от пользователя и разбиваем по пробелам в список.
        # Если user input = read 2017 admin, то получим ['read', '2017', 'admin'].
        command = input("command? ->").split()
        # Используем метод словаря .get() для получения функции
        # связанной с введенной командой, записываем ее в переменную option.
        option = options.get(command[0])  # command[0] - операция индексации списка.
        # Проверяем удалось ли получить функцию связанную с командой пользователя.
        if option:
            # Если удалось, то вызываем функцию с аргументами полученными с помощью
            # операции извлечения среза и распаковки списка в отдельные аргументы.
            option(*command[1:])


    Вывод :
    command? ->read 2017 admin
    'Read' Function with given args:
        2017
       admin
    command? ->


    Бонусом небольшое объяснение про звездочку.

    Инструкция * в зависимости от того где она находится делает разные вещи(помимо умножения):

    В строке с объявлением функции ( def create(*args): ) она позволяет "запаковать" все переданные функции аргументы в один кортеж args. То есть нет необходимости указывать какие именно позиционные аргументы ожидает получить функция, можно передать любое их количество (нуль и более).

    В строке с вызовом функции ( option(*command[1:]) ) она позволяет "распаковать" все элементы последовательности в отдельные позиционные аргументы. То есть все объекты в указанной последовательности command[1:] будут передаваться в функцию как отдельные позиционные аргументы.

    В примере сверху если предварительно не распаковать command[1:] в отдельные аргументы, звездочка запакует в кортеж args целый список, т.е. получим (['2017', 'admin']) - кортеж с одним объектом внутри, что сломает наши функции, придется дополнить цикл тремя лишними символами для их работоспособности (добавить индексацию кортежа: for arg in args[0]). Если же распаковать, то получим кортеж с двумя объектами внутри, что позволит напрямую пройтись в цикле по кортежу.

    Больше информации про распаковку аргументов, индексацию списка и извлечению срезов можно найти в гугле. ( Например про родственника звездочки * двойную звездочку ** которая помогает в работе с именованными аргументами)
    Ответ написан
    Комментировать
  • Как так рисуют, что за техника, подход?

    @javedimka
    Хочу сока
    Вообще это еще инопланетяне в древнем Египте
    придумали:
    Plate-4.jpgPlate-7.jpg

    Ну а вообще гуглится, много чего люди написали по теме:
    https://graphicdesign.stackexchange.com/questions/...
    выдержка
    if TL;DR > It's called Grid Based Design.

    Да и вообще сам так делал когда руками программы на лазерный станок писал, каждый изгиб приходилось подгонять кругами, чтобы меньше движений лазер делал, а делалось это просто, берешь инструмент круг и максимально ровно прикладываешь на изображение. Тут же почти тоже самое
    Ответ написан
    1 комментарий
  • Что сравнивается при сравнении массива с числом?

    @javedimka
    Хочу сока
    В питоне это называется списком, лучше уточнять.

    А ответом на твой вопрос является версия Python, когда ты в Python 2 сравниваешь два не одинаковых типа данных, то они сравниваются лексикографически(так это называется?), когда два названия типа сравниваются по алфавиту, т.е. тип списка это "list", тип целого числа это "int", сравнивается первая буква каждого слова, в английском алфавите буква L идет после i, т.е. порядковый номер буквы L(12) в алфавите больше, чем порядковый номер i(9), поэтому получается, что list > int (12>9), поэтому в Python 2 список больше числа с типом int (или float, decimal, по аналогии, но при этом числовые типы int, float, decimal можно успешно сравнивать между собой.)

    В Python 3 получишь ошибку:
    >>> x = [2, 3, 4, 6]
    >>> x > 1
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        x > 1
    TypeError: unorderable types: list() > int()
    Ответ написан
    Комментировать
  • Что значит такой синтаксис многострочного комментария в python?

    @javedimka
    Хочу сока
    Это значит, что он написан для Sphinx(или для Docutils, например) - генератора HTML(и не только) документации, сам синтаксис - reStructuredText
    Более подробно:
    docs.python-guide.org/en/latest/writing/documentation
    Конкретные примеры синтаксиса и то как они будут обработаны генератором:
    docutils.sourceforge.net/docs/user/rst/quickref.html
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (1)