Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


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

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: shrmn, 22:22 07-03-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Код:
print(timeit.timeit('list(str)', setup='str="some test string"', number=50000))
print(timeit.timeit('map(lambda el: el, str)', setup='str="some test string"', number=50000))

говорит иное

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 06:24 26-08-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вы имеете в виду такую проверку?  
>>> print(timeit.timeit('list(str)', setup='str="some test string"', number=50000))
0.01113250000000221
>>> print(timeit.timeit('map(lambda el: el, str)', setup='str="some test string"', number=50000))
0.008329300000013973
 
Добавлено:
Вот, что у меня в консоли:

Код:
list - 2773
[183, 135, 24, 56, 210, 186, 52, 222, 246, 214, 160, 188, 50, 201, 112, 12, 0, 142, 244, 74, 171, 39, 86, 247, 173, 234]
map - 229
[183, 135, 24, 56, 210, 186, 52, 222, 246, 214, 160, 188, 50, 201, 112, 12, 0, 142, 244, 74, 171, 39, 86, 247, 173, 234]
 

Может быть дело в  многократном повторе операции?
 
Добавлено:
Кажется понял. Ощутимая разница возникает при увеличении длины тестируемой строки. Можно увидеть здесь:

Код:
t_Str=str[0:100]
print(timeit.timeit('list(str)', setup='str="'+t_Str+'"', number=50000))
print(timeit.timeit('map(lambda el: el, str)', setup='str="'+t_Str+'"', number=50000))


Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 06:34 26-08-2020 | Исправлено: Vadim39, 08:41 26-08-2020
Maxus19

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Я начинающий программист. Стоит ли начинать именно с питона? Может другой язык?

Всего записей: 3 | Зарегистр. 26-08-2020 | Отправлено: 17:38 26-08-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39
map не создает списка, а возвращает итератор в 3 питоне

Цитата:
Return an iterator that applies function to every item of iterable, yielding the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. For cases where the function inputs are already arranged into argument tuples, see itertools.starmap().

 
во 2 возвращает список, потому и разница по времени

Цитата:
Apply function to every item of iterable and return a list of the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. If one iterable is shorter than another it is assumed to be extended with None items. If function is None, the identity function is assumed; if there are multiple arguments, map() returns a list consisting of tuples containing the corresponding items from all iterables (a kind of transpose operation). The iterable arguments may be a sequence or any iterable object; the result is always a list.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:54 26-08-2020 | Исправлено: Mavrikii, 19:57 26-08-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Исчерпывающе, как всегда, спасибо!

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 21:29 26-08-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В игрушке нужно вывести количество очков. Как известно, слово "очки" склоняется по разному в зависимости от значения. В результате, получился следующий скрипт. Вроде все нормально, но, может быть, можно его улучшить? Ведь получается, что первая проверка исключает только числа, вероятность появления которых, всего лишь 4%.  

Код:
import random
ochk=('очков','очка','очко')
n=random.randint(1, 2000)
k=0
if not 11 <=  n % 100 <= 14:
    tmp=n % 10
    if  1 <= tmp <= 4: k=1
    elif tmp == 1: k=2
print(str(n) + ' ' + ochk[k])    
 

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 01:04 04-09-2020 | Исправлено: Vadim39, 01:13 04-09-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39

Цитата:
можно его улучшить?

не страдайте фигней. if условия не то место, которое следует "улучшать".

Код:
import random
n = random.randint(1, 2000)
text = ('очко', 'очка', 'очков')
cases = (2, 0, 1, 1, 1, 2)
print(str(n) + " " + text[2 if (n % 100 > 4 and n % 100 < 20) else cases[min(n % 10, 5)]])

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:44 04-09-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Классно, спасибо!

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 10:28 04-09-2020
RL200t

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
import time
 
print("Done.")
 
time.sleep(3)

Если запустить в FAR Manager, то перед окончанием выполнения скрипта Питон ждёт 3 секунды. А вот если щёлкнуть по скрипту 2 раза ЛКМ в Windows, то окно закрывается мгновенно, без ожидания. Почему так происходит? Мне нужно, чтобы было ожидание 3 секунды перед закрытием окна, когда я запускаю скрипт двойным щелчком. Помогите разобраться.
 
И ещё, дополнительно. Подскажите, как сделать, чтобы окно выполнения скрипта появлялось не в рандомном месте на экране, а ровно в центре?

Всего записей: 910 | Зарегистр. 06-10-2018 | Отправлено: 12:48 15-09-2020 | Исправлено: RL200t, 12:49 15-09-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RL200t

Цитата:
Почему так происходит

Возникает какая то ошибка и скрипт вообще не выполняется.
 
Добавлено:

Цитата:
чтобы окно выполнения скрипта появлялось не в рандомном месте на экране, а ровно в центре?

https://stackoverflow.com/questions/3646362/how-to-control-the-size-of-the-windows-shell-window-from-within-a-python-script
https://stackoverflow.com/questions/45827930/changing-the-position-of-the-console-window-with-python-windows

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 12:51 15-09-2020
RL200t

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Возникает какая то ошибка и скрипт вообще не выполняется.

Но он выполняется, если запустить в FAR. Значит, там всё нормально. И FAR в CLI ошибок не показывает.

Всего записей: 910 | Зарегистр. 06-10-2018 | Отправлено: 13:06 15-09-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RL200t

Цитата:
запустить в FAR.  

И что? Может у вас по клику вообще другая ассоциация запускается или иная версия питона.
Но если окно сразу закрывается - скрипт не выполняется.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 13:11 15-09-2020
RL200t

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но если окно сразу закрывается - скрипт не выполняется.

Я не весь скрипт вставил. Там у меня есть строчка, скачивающая web-страницу. Оно выполняется. Страница скачивается и сохраняется в файл, как и указано. Но мне хотелось, чтобы сообщение на экране задерживалось.
 
Версия Питона у меня 1 установлена. Это 100%. Последняя.
 
Как выяснить, где именно что-то не сработало?

Всего записей: 910 | Зарегистр. 06-10-2018 | Отправлено: 19:10 15-09-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RL200t

Цитата:
Как выяснить, где именно что-то не сработало?

Открыть консольное окно и запустить из него.
Или показывать весь код.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:14 15-09-2020
karrpekin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно начать изучать с этого видео: https://www.youtube.com/watch?v=ahe3WpBMdm4&list=PLd2BLB5k47cVH1tqir_9lShtq-GTQqi8p&index=32

Всего записей: 11 | Зарегистр. 15-03-2018 | Отправлено: 08:06 05-11-2020
rudava



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день коллеги  
 
Возникла проблема, сыну, второкурснику задали задание, которое звучит примерно как "Вот как файл изображения, например BMP превращается в JPG , первый этап преобразование из RGB в цветовую модель YCbCr, Субдискретизация, Дискретное Косинусное Преобразование, Квантование и тд кртче там 7 уровней.
И вот вам задание, говорит: идите домой и напишите алгоритм воспроизводящий этот процесс "своими словами". Конечно для середнячка, а мой студент, именно такой, это предложение вызвало мелкую дрожь и ступор одновременно. Тем более дистанционка добавила минусов в ситуацию. Я взялся помочь, но вникнув я понял что задачка равна - "идите домой и расщипите уран 235 на кухне, раз уж теорию я вам поведал".  
Вопрос из выше изложенного, если у кого под рукой код годный для демонстрации задачи в Python? Я пытался это в Pycharm сделать, но мое медицинское образование мне мало помогает в этом вопросе. Я остановился на преобразование RGB в YCbCr  
def ColorConversionToYCbCr(R, G, B):
    """
  from PIL import Image, ImageDraw #Подключим необходимые библиотеки.
 
mode = int(input('mode:')) #Считываем номер преобразования.
image = Image.open("c:\\Users\\ruda\\Desktop\\krolik.bmp") #Открываем изображение.
draw = ImageDraw.Draw(image) #Создаем инструмент для рисования.
width = image.size[0] #Определяем ширину.
height = image.size[1] #Определяем высоту.
pix = image.load() #Выгружаем значения пикселей.
 
 
 
def Clamp(col):
    """
    Makes sure col is between 0 and 255.
    """
    col = 255 if col > 255 else col
    col = 0 if col < 0 else col
    return int(col)
 
 
 
 
def ColorConversion(Y, Cr, Cb):
    """
    Converts Y, Cr and Cb to RGB color space
    """
    R = Cr * (2 - 2 * 0.299) + Y
    B = Cb * (2 - 2 * 0.114) + Y
    G = (Y - 0.114 * B - 0.299 * R) / 0.587
    return (Clamp(R + 128), Clamp(G + 128), Clamp(B + 128))
 
 
def ColorConversionToYCbCr(R, G, B):
    """
    Converts RGB  to YCbCr color space
    """
    # Y = .299 * 10 + .587 * G + .114 * B
    # Cb = 128 - .168736 * R- .331364 * G + .5 * B
    # Cr = 128 + .5 * R - .418688 * G - .081312 * B
 
 
    Y = R * 0.29900 + G * 0.58700 + B * 0.11400
    Cb = (R * -0.16874 + G * -0.33126 + B * 0.50000)-128
    Cr = (R * 0.50000 + G * -0.41869 + B * -0.08131)-128
    return Clamp(Y), Clamp(Cb), Clamp(Cr)
 
 
if (mode == 9): # введите 9 для начала исполнения
    for i in range(width):
        for j in range(height):
            a = pix[i, j][0]
            b = pix[i, j][1]
            c = pix[i, j][2]
            S = ColorConversionToYCbCr(a, b, c)
 
            print((i, j), (S)[0],(S)[1],(S)[2])
            draw.point((i, j), (S))
 
 
image.save("ans.png", "PNG")
del drawCr)
 
Вообщем помощь нужна и советом или место покажите, вроде много где был GitHub облазил, но все тщетно пока ...

Всего записей: 33 | Зарегистр. 26-01-2007 | Отправлено: 22:05 23-11-2020 | Исправлено: rudava, 22:07 23-11-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rudava

Цитата:
mode = int(input('mode:')) #Считываем номер преобразования.

зачем? просто реализовать последовательно все шаги.
 

Цитата:
from PIL import Image, ImageDraw #Подключим необходимые библиотеки.

вы выясните можно ли их использовать вообще.
PIL не является библиотекой по умолчанию.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:17 24-11-2020
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот, возможно поможет.. https://pypi.org/project/dippykit/

Всего записей: 883 | Зарегистр. 14-12-2005 | Отправлено: 07:44 25-11-2020
AnTul

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В pychar когда запускаю программу, курсор остаётся в панели кода, а не переходит в консоль. А программа, например, задаёт вопрос. Я набираю ответ, который набирается в коде, потом спохватываюсь и переключаюсь в консоль, код чищу. Это всё неудобно. Какой настройкой курсор перекидывается в консоль, подскажите, пожалуйста? И ещё - какой самый внятный синтаксис для светлой темы? И есть ли тема не очень светлая, но совсем не тёмная?

----------
Василий Великий: «Кто смотрит на зло без отвращения, тот скоро будет смотреть на него с удовольствием».

Всего записей: 5477 | Зарегистр. 13-07-2004 | Отправлено: 20:28 15-12-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AnTul
при чем тут редактор и язык программирования?
https://stackoverflow.com/questions/19971221/keyboard-shortcut-to-switch-between-python-console-and-the-editor-in-pycharm

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:46 15-12-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru