[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Срочно нужна помощь.
    Надо функция которая будет искать близкое значение (ИЗ МАССИВА). Например у меня есть число 156 и массив с числами [12,21,31,11,412,512,546,198]
    надо найти близкое число к 156 из данного массива. Вот набросал код по быстрому ... но надо помощь ( может кто лучше напишет ).
    Code:
    def num(numb,numbers):
        n = 0
        m = []
        m2 = []
        numb_s = numb
        while True:
            if n == 0:
                numb_s += 1
                if numb_s in numbers:
                    m.append(numb_s)
                    n = 1
                    continue
            if n == 1:
                numb_s -= 1
                if numb_s in numbers:
                    m2.append(numb_s)
                    break
        minu = m[0]-numb
        minu2 = m2[0]-numb
    
        if minu > minu2:
            return m2[0]
        else:
            return m[0]
     
  2. ZodiaX

    ZodiaX Reservists Of Antichat

    Joined:
    7 May 2009
    Messages:
    533
    Likes Received:
    308
    Reputations:
    51
    Code:
    lists = [12,21,31,11,412,512,546,198]
    val = 156
    
    difs = [abs(val - x) for x in lists]
    res = difs.index(min(difs))
    
    print(lists[res])
     
    Matrix001 and spize0r like this.
  3. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Помогите ...
    Как написать программу для генерации всех возможных комбинаций состоящих из 2-х цифр (1 цифра из длины состоит из этих 2 цифр) например (2,3) длиной 10 цифр
     
  4. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Написание нейронной сети для обучения на изображениях (в данном случае на 2-x, одно входное, другое выходное).
    Нужна помощь от кого-угодно, всем заранее спасибо. Желательно писать все замечания.

    Сама нейронка

    Code:
    from random import randrange
    from math import ceil, exp
    
    global w
    
    w = []
    def initial(mas):
    for i in range(0, len(mas)):
    w.append(1) # Веса, пока что 1
    
    def learn(mas,w,output):
    s = 0for i in range(0, len(mas)):
    s += mas[i] * w[i] # Умножение входных данных на веса
    s = 1/(1 + exp(-s)) # Функция активации (сигмоида)
    err = output - s # Как-бы ошибка, но до конца не разобрался
    for i in range(0, len(mas)):
    w[i] = (err * 0.4 * mas[i]) # Обновление весов
    return err
    Основа
    Code:
    from PIL import Image
    from myneurotestlib import neural
    
    img1 = Image.open('img/2.jpg')
    img2 = Image.open('img/5.jpg')
    
    size = img1.size
    
    mas_img1 = []
    
    for x in range(0, size[0]):
        for y in range(0, size[1]):
            g1 = img1.getpixel((x, y))
            mas_img1.append(g1)
    
    neural.initial(mas_img1)
    for x in range(0, 122):
        err = neural.learn(mas_img1, neural.w, 223) # 223 не знаю сравнивать каждое значение или приводить общую ошибку ?
    print(err)
     
    #1044 Matrix001, 21 Nov 2017
    Last edited: 21 Nov 2017
  5. DarkDrago

    DarkDrago Member

    Joined:
    11 May 2017
    Messages:
    21
    Likes Received:
    8
    Reputations:
    0
    Помогите!
    Как сделать для API Telegram бота функцию,чтобы он отправлял файл из папки?
    Code:
    import requests
    import misc
    token = misc.token
    URL ='https://api.telegram.org/bot' + token + '/'
    def get_updates():
    url = URL + 'getupdates'
    r = requests.get(url)
    return r.json()
    def get_message():
    data = get_updates()
    chat_id=data['result'][-1]['message']['chat']['id']
    message_text = data['result'][-1]['message']['text']
    message ={'chat_id': chat_id,
    'text': message_text}
    return message
    def send_message(chat_id, text='Wait a second,pleace...'):
    url = URL + 'sendmessage?chat_id={}&text={}'.format(chat_id,text)
    requests.get(url)
     
  6. Jerri

    Jerri Elder - Старейшина

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    Пните меня кто-нибудь, если ошибаюсь, но API для ботов не дает возможности напрямую загружать файлы. Но, можно отдавать файлы через URL.

    Пример отправки видео, если надо (так со всеми видами документов можно поступать)
    Code:
    import requests
    
    class TeleApi:
        def __init__(self, token, host_ip=None, host_port=None, que=None):
             self.token = token
             self.telewebhook_url = "https://api.telegram.org/bot%s/setWebhook" % self.token
             self.webhook_url = "https://......./telebot/webhook.php"
             self.api_url =  'https://api.telegram.org/bot%s' % self.token
    
        def send_video(self, chat_id, video_url):
             message_data = {
                 'chat_id': chat_id,
                 'video': video_url,
             }
    
             try:
                 request = requests.post(self.api_url + '/sendVideo', data = message_data)
             except Exception as ex:
                 print(ex)
                 return False
    
    
    ap = TeleApi('token')
    ap.send_video('id чата', 'url video')
     
  7. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Пример выполнения low_poly с функцией(триангуляции) https://github.com/footoredo/low_poly. Приведите пожалуйста без и без фильтра (FIND_EDGE). Чтоб просто заполоняло необходимым (Средним размытием).
     
  8. Jerri

    Jerri Elder - Старейшина

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    https://pastebin.com/iVxq2UkE
    PHP:
    from PIL import ImageImageFilter
    import sys

    def low_poly
    (sourcemin_distfactor):
      
    result source.filter(ImageFilter.BLUR#result = source.filter(ImageFilter.GaussianBlur(5))
      
    return result

    source 
    Image.open(sys.argv[1]).convert("RGB")
    image low_poly(source,float(sys.argv[2]),float(sys.argv[3]))
    image.show()
    if 
    len(sys.argv) > 4:
      
    image.save(sys.argv[4])
    Ну или ImageFilter.GaussianBlur(10)
    Если это не подходит, то не могу подсказать, не работал особо с изображениями
     
    #1048 Jerri, 2 Dec 2017
    Last edited: 2 Dec 2017
  9. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Это простое размытие по гауссу !
     
  10. DOOmsdAi

    DOOmsdAi New Member

    Joined:
    7 Dec 2017
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    [Решено] Привет, как можно исправить эту проблему с кодировкой?
     

    Attached Files:

    #1050 DOOmsdAi, 17 Dec 2017
    Last edited: 19 Dec 2017
  11. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Если это у тебя вылетает при pwfile = 'default' ТО 1- у почему ты не задал utf-8 если pwfile != 'default'. И проверь содержимое файла password.txt.
     
  12. Jerri

    Jerri Elder - Старейшина

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    Попробуй открывать файл так:
    open(pwfile, 'r', encoding='utf-8', errors='ignore')
     
  13. DOOmsdAi

    DOOmsdAi New Member

    Joined:
    7 Dec 2017
    Messages:
    5
    Likes Received:
    1
    Reputations:
    0
    не помогло. зато если поставить .strip() в методе hashlib.md5() работает. спасибо за помощь)
     
    #1053 DOOmsdAi, 19 Dec 2017
    Last edited: 19 Dec 2017
  14. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Есть массив который в себе содержит кортежи вида (12, (11,87)) надо брать и найти все одинаковые значения с индексем 0 а потом найти средние значения с индексем 1,0 1,1 . И так для каждого числа ?
     
  15. SeniorJunior

    SeniorJunior New Member

    Joined:
    12 Feb 2018
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    задача не очень ясно написана, но я предположу что-то вроде
    Code:
    a=[(1,(2,3)), (1,(4,5)), (10,(1,1)), (10,(2,3))]
    r={}
    for l in a:
      ind0 = l[0]
      ind10 = l[1][0]
      ind11 = l[1][1]
      if ind0 in r:
        r[ind0][0]+=ind10
        r[ind0][1]+=1
        r[ind0][2]+=ind11
        r[ind0][3]+=1
      else:
        r[ind0]=[ind10, 1, ind11, 1]
    
    for k in r:
      ave1 = r[k][0]*1.0/r[k][1]
      ave2 = r[k][2]*1.0/r[k][3]
      print k, ave1, ave2
     
  16. Matrix001

    Matrix001 Active Member

    Joined:
    18 Aug 2016
    Messages:
    262
    Likes Received:
    146
    Reputations:
    3
    Помогите чем сможете.
    Есть код. Изображения разные.
    Code:
    from os import listdir#импорт библиотеки.
    from PIL import Image#импорт библиотеки. Работа с изображениями.
    
    files = listdir('img')#Возвращает имена в папке img.
    m = [[]] * len(files)#создает массив с массивами равной количествам файлам.
    
    newm = []#Массив для новых значений.
    
    k = 0# Индекс массива
    
    new_img = Image.new('L', (450, 450), (0)) # Новое изображение
    
    i = 0
    for name in files:
        img = Image.open('img/'+name).convert('L') # Преобразование в Градации Серого (1 значение цвета от 0 до 255)
        for x in range(0, img.size[0]): # Цикл
            for y in range(0, img.size[1]):
                m[k].append(img.getpixel((x, y))) # Добавляю в массив m[0][0] и т.д
        k += 1 # Плюсую к K 1-цу
    Я даже так сделал
    Code:
    from os import listdir#импорт библиотеки.
    from PIL import Image#импорт библиотеки. Работа с изображениями.
    
    files = listdir('img')#Возвращает имена в папке img.
    m = [[]] * len(files)#создает массив с массивами равной количествам файлам.
    
    newm = []#Массив для новый значений.
    
    k = 0# Индекс массива
    
    new_img = Image.new('L', (450, 450), (0)) # Новое изображение
    
    i = 0
    for name in files:
        img = Image.open('img/'+name).convert('L') # Преобразование в Градации Серого (1 значение цвета от 0 до 255)
        m[k].append(img.getdata()) # Добавляю в массив все значения пикселей
        k += 1 # Плюсую к K 1-цу
    После выполнения. В массива первые и последующие цифры одинаковые. Тоесть m[0][0] = m[1][0] = m[2][0] = m[k][n].
    Что может быть. Жду помощи с любой стороны. Заранее спасибо ! ;)
     
    #1056 Matrix001, 7 Mar 2018
    Last edited: 8 Mar 2018
  17. Jerri

    Jerri Elder - Старейшина

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    Code:
    from os import listdir#импорт библиотеки.
    from PIL import Image#импорт библиотеки. Работа с изображениями.
    
    files = listdir('img')#Возвращает имена в папке img.
    m = [] * len(files)#создает массив с массивами равной количествам файлам.
    
    newm = []#Массив для новый значений.
    
    new_img = Image.new('L', (450, 450), (0)) # Новое изображение
    
    for name in files:
        img = Image.open('img/'+name).convert('L') # Преобразование в Градации Серого (1 значение цвета от 0 до 255)
        m.append(img.getdata()) # Добавляю в массив все значения пикселей
    
    
    print(m[0][4])
    print(m[1][4])
    print(m[2][4])
     
    Matrix001 likes this.
  18. DarkDrago

    DarkDrago Member

    Joined:
    11 May 2017
    Messages:
    21
    Likes Received:
    8
    Reputations:
    0
    При установки vedis вылетает ошибка. Я пере установил С++.
     

    Attached Files:

  19. Jerri

    Jerri Elder - Старейшина

    Joined:
    12 Jul 2009
    Messages:
    136
    Likes Received:
    377
    Reputations:
    22
    Надо добавить cl.exe в PATH или запускать не просто cmd, а Visual C++ Command Prompt.
     
  20. killanas

    killanas Member

    Joined:
    14 Sep 2015
    Messages:
    27
    Likes Received:
    10
    Reputations:
    0
    Немного стыдно. Не получается ни как реализовать банальную вещь.
    Описание: Текстовый файл с числом. Нужно что бы при каждом запуске файла, число которое в нем лежит увеличивалось на 1.
    Читаю из файла так:
    Все шикарно.
    Когда начинаю пытаться записать число в этот же файл:
    Разве не так как то записываю?)

    p.s. На С++ по итогу в разы сделал быстрее.
     
    #1060 killanas, 23 Mar 2018
    Last edited: 23 Mar 2018