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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 27

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

Adm10



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

Python


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

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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да да речь идет о существующем изначально текстовом файле, из которого питон откроет (приложено), добавите еще три записи (добавлено), инвертирует записи (тоесть в строках списки городов поменяет местами  или абревиутеры штатов в конец кинет. И после запишет это в другой текстовый файл. прошу прощение за неточные объяснения и еще раз спасибо за помощь.  
 
Добавлено:

Цитата:
всё что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы
 
откуда начать...
 
самый простой, доступный и вместе с тем грамотный ресурс на русском:
https://pythonworld.ru/
 
там же самоучитель (всего 150 страниц основы и никакой воды):
https://pythonworld.ru/samouchitel-python
 
и библия PEP8
https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html

 
Большое спасибо, я этим уже пользуюсь.

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 17:32 26-03-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hinzor
это все можно написать более коротко (сразу считывая в инвертированном виде), ну и без сортировки - просто подробно и наглядно.

Код:
dict = {}
with open('input.txt') as inp:
    # reading
    for line in inp:
        if not line.strip():
            continue;
        [state, cities] = line.strip().split(':')
        dict[state] = map(str.strip, cities.split(','))
         
    # inverting
    dict = {city: state for state, cities in dict.items() for city in cities }
     
    # saving
    with open('output.txt', 'w') as out:
        for city, state in dict.items():
            out.write(city + ': ' + state + '\n')

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 22:23 26-03-2020
Hinzor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое спасибо. Буду готовиться к экзамену.

Всего записей: 45 | Зарегистр. 16-08-2007 | Отправлено: 05:56 27-03-2020
life_so_good



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

Всего записей: 1335 | Зарегистр. 30-04-2002 | Отправлено: 13:02 01-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
life_so_good
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Code-snippets

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 13:58 01-04-2020
life_so_good



Оптимист
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
спасибо, но поскольку я с Python на "Вы", мне бы что-то "из коробки"

Всего записей: 1335 | Зарегистр. 30-04-2002 | Отправлено: 16:16 01-04-2020
Mavrikii

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

Цитата:
мне бы что-то "из коробки"

это и есть из "коробки". установить пакет и воспользоваться парой его возможностей.
https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot
прямо вот так, как хочется вам, вряд ли найдется 100% готовое.
 
https://habr.com/ru/post/448310/
https://habr.com/ru/post/442800/
https://tproger.ru/translations/telegram-bot-create-and-deploy/

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 21:53 01-04-2020 | Исправлено: Mavrikii, 21:54 01-04-2020
RidReSS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ооо, пайтон родной. Недавно учить начал. Кстати, всем рекомендую, очень перспективной язык программирования. Довольно не трудный (это вам не с++) и интересный в изучение, много все на нем можно делать, рекомендую

Всего записей: 26 | Зарегистр. 16-12-2019 | Отправлено: 22:58 23-05-2020
fararara

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите  литературу/ролики по практическому применению Python. В первую очередь интересует создание динамических сайтов.

Всего записей: 243 | Зарегистр. 19-03-2010 | Отправлено: 17:42 08-06-2020
Vadim39



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

Код:
l=len(myStr)
for i in range(l):
    char = ord(myStr[i]) - 1488
#    if char in range(0, 26):
    if (char > -1) & (char < 27):
        count+=1

Почему проверка "if char in range(0, 26)" занимает почти в два раза больше времени, чем "if (char > -1) & (char < 27)"? Может есть способ проверить еще быстрее?

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 06:09 24-08-2020
Mavrikii

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

Цитата:
занимает почти в два раза больше времени

потому что это, фактически, перебор массива.
создается массив чисел от 0 до 26 и проходится по нему в поиске числа.
 
https://stackoverflow.com/questions/47976142/check-if-any-all-character-of-a-string-is-in-a-given-range

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 06:56 24-08-2020 | Исправлено: Mavrikii, 07:11 24-08-2020
Vadim39



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

Цитата:
потому что это, фактически, перебор массива.  

Спасибо! Хотя, несколько странно. Предположим, некто должен передать Вам посылку в городском парке, и Вам сказали, что ему лет тридцать-сорок. Вы же не станете, ожидая его прикидывать: может ли этому быть 30 лет? 31 и т.д. Скорее будете думать: этот - явно моложе, этот - старше, а вон то подозрительно похож на почтальона

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vadim39
странно что? вам сказали, что человек выглядит так то в толпе, вы ее перебираете сравнивая с тем, что вам о нем известно. пока не натолкнетесь.
быстрее, чем if с условием не будет.

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 02:35 25-08-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вы правы, конечно. Я просто хотел сказать, что мой "внутренний интерпретатор" сам поймет, что такая примета, как принадлежность к группе "тридцать-сорок" требует отсева тех, кто старше 40 и младше 30. Так что, в этом смысле я, пожалуй, слегка превосхожу великого поэта Владислава Ходасевича, всего лишь "всезнающего как змея"
 
Зато в программировании - почти ничего не смыслю. Так что, если не трудно, подскажите, пожалуйста, возможно ли одним действием (без цикла) удалить из Counter({'a': 5, 'b': 3, 'c': 2, 'd': 3, 'e': 10}) все ключи, кроме, скажем 'a' и 'b' не изменив значения последних? Пытался воспользоваться этим: "Counter также поддерживает сложение, вычитание, пересечение и объединение:", но пока ни до чего не додумался, кроме как до такой дикости:

Код:
c = collections.Counter(a=1, b=2, x=5, y=1)
d = collections.Counter(a=-10**10, b=-10**10, )
print(c-(c+d))

Да и это подходит лишь для натуральных a и b, да и то при условии, что их все же меньше, чем атомов во вселенной. А что делать, если нужно считать кванты!?

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

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

Код:
c = collections.Counter(a=1, b=2, x=5, y=1)
print(collections.Counter(el for el in c.elements() if el in 'ab'))
print(collections.Counter({k:c for k, c in c.items() if k in 'ab'}))
print(collections.Counter({k:c[k] for k in 'ab'}))

или это "с циклом"?
не так много операций поддерживает - https://pymotw.com/3/collections/counter.html

Всего записей: 15097 | Зарегистр. 20-09-2014 | Отправлено: 05:02 25-08-2020 | Исправлено: Mavrikii, 05:08 25-08-2020
Vadim39



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Исчерпывающе, спасибо!
Просто 'ab...' может быть много. Я привел тот кошмарный пример, поскольку (поправьте, пожалуйста, если не прав) сложение ... сопоставление, по идее, должно отрабатываться быстрее.

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 05:57 25-08-2020
Mavrikii

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

Цитата:
по идее, должно

по какой идее? тут напрямую идет выборка только нужных элементов
последняя строка самая короткая, но нужно быть уверенным, что элементы a и b существуют.

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



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

Цитата:
тут напрямую идет выборка только нужных элементов  

Поянтно, спасибо!
Если позволите, еще вопрос почему первая строчка выполняется более, чем вдвое медленнее второй?

Код:
rez=list(str)
rez = map(lambda el: el, str)


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

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

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

как проверяли? один раз?

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



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

Код:
import random
sl=random.randint(0, 26)
str=os.urandom(500)
timer(0,w)
tm=10**6
for i in range(0,tm):
    rez=list(str)
timer('list',w)
print(rez[sl:sl+26])
 
for i in range(0,tm):
    rez = map(lambda el: el, str)
#    rez = [el for el in str]
timer('map',w)
print(list(rez)[sl:sl+26])
 

timer() - это чтобы измерить время выполнения. На всякий случай, вот:

Код:
def timer(N,w):
    global k
    if not 'k' in globals(): k=0; tm.append(int(time.time()*1000.0));
    tm.append(int(time.time()*1000.0));  
    dif = tm[k+1] - tm[k]
    if not N == 0: w.outputBar.writeln("%s - %d" % (N, dif));
    k+=1
 

Всего записей: 1117 | Зарегистр. 11-04-2002 | Отправлено: 06:17 26-08-2020 | Исправлено: Vadim39, 06:27 26-08-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 27

Компьютерный форум 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