Перейти к содержимому

Фотография

Интересный PythonКонсультации, Вопросы, Интересные Задачки на Python

python вопросы задачки консультации программирование

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 73

#1
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Собственно Сабж. 

 

Если у кого есть Вопросы, Задачки по Программированию на Python постим сюда - Ответы и Решения будут.

 

 

 

 


  • 0

#2
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

И для почина - чтобы разогреть Многоуважаемую Аудиторию - Первый  Вопрос от меня про Интересные Shared acute.gif

 

К примеру  есть такая Программа

import sys


class ParseResult:
  errors_list= []
  parse_ok= False


def Parse():
  result= ParseResult()
  result.errors_list.append( "something" )
  return result


def main():
  print( Parse().errors_list )
  print( Parse().errors_list )
  print( Parse().errors_list )
  print( Parse().errors_list )

if __name__ == "__main__":
  sys.exit(main())

Выполнить код  он-лайн  см. http://rextester.com/PXL1357

 

Т.е. при выполнении программа  на выводе дает вот что

$ python test.py
['something']
['something', 'something']
['something', 'something', 'something']
['something', 'something', 'something', 'something']

Почему? Т.е. откуда возникают Shared состояния? acute.gif

 

Кто даст правильный Ответ - получит Плюсик в Репутацию good3.gif


Сообщение отредактировал T-800 Danya: 27.08.2018, 15:40:06

  • 0

#3
lexx821

lexx821
  • Свой человек
  • 816 сообщений

От нечего делать, вот написал код на python, алгоритм пузырчатой сортировки, возможно её как-то можно упростить...

def bubble_sort(l):
    for i in range(0, len(l)):
     for j in range(i, len(l)):
       if l[i] > l[j]: 
         l[j],l[i] = l[i],l[j]
    
l = [100, 5, 1, 7, 20, 10000]
print(l)
bubble_sort(l)
print(l)

  • 0

#4
Создатель

Создатель
  • Случайный прохожий
  • 1 сообщений

Где можно пройти курсы Python в Алматы?


  • 0

#5
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Где можно пройти курсы Python в Алматы?
 

Я лично научился языку Python просмотрев видеоролики Тимофея Хирьянова на ютубе, он очень хорошо, просто и понятно объясняет. А когда базовые знания получили, потом нужно будет читать онлайн документацию по языку, установить Python на комп, и закреплять теоретические знания практикой.


  • 0

#6
hes

hes
  • В доску свой
  • 1 567 сообщений

питон коварен:) еще эликсир вот хорошая вещь, похож на питон, похож на руби, базирован на Erlang https://habr.com/ru/post/50028/

вацапы, чаты фейсбука, телеграм - это всё джаббер, xml-потоки, можно и protobuf, протокол xmpp


  • 0

#7
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

И для почина - чтобы разогреть Многоуважаемую Аудиторию - Первый  Вопрос от меня про Интересные Shared acute.gif

 

К примеру  есть такая Программа

import sys


class ParseResult:
  errors_list= []
  parse_ok= False


def Parse():
  result= ParseResult()
  result.errors_list.append( "something" )
  return result


def main():
  print( Parse().errors_list )
  print( Parse().errors_list )
  print( Parse().errors_list )
  print( Parse().errors_list )

if __name__ == "__main__":
  sys.exit(main())

Выполнить код  он-лайн  см. http://rextester.com/PXL1357

 

Т.е. при выполнении программа  на выводе дает вот что

$ python test.py
['something']
['something', 'something']
['something', 'something', 'something']
['something', 'something', 'something', 'something']

Почему? Т.е. откуда возникают Shared состояния? acute.gif

 

Кто даст правильный Ответ - получит Плюсик в Репутацию good3.gif

 

Интересный вопрос. Попробую на него ответить. Мне думается, это происходит по следующим причинам. 

В объявлении класса ParseResult используется атрибут error_list с изменяемым типом данных (list), который является переменной класса (class variable), а не его экземпляра. Другими словами, список error_list используется совместно всеми экземплярами данного класса, потому что каждый из них хранит ссылку на один и тот же список. Дальше в функции main() несколько раз вызывается функция Parse(), которая каждый раз создает новый экземпляр класса ParseResult и сразу же изменяет атрибут error_list, когда добавляет новый элемент в список при помощи метода append(). Поскольку атрибут совместно используется всеми экземплярами, он автоматически изменяется во всех остальных уже созданных экземплярах этого класса. Чтобы каждый экземпляр класса имел собственное значение атрибута error_list, надо переписать класс примерно так:

class ParseResult:
   def __init__(self, parse_ok):
      self.parse_ok = False
      self.errors_list = [] # создает новый пустой список для каждого экземпляра ParseResult

   def add_error(self, error):
      self.errors_list.append(error)

Правильный ли мой ответ? Будет ли у меня плюсик в репутацию?  ;)


  • 1

#8
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Интересный вопрос. Попробую на него ответить. Мне думается, это происходит по следующим причинам. 
В объявлении класса ParseResult используется атрибут error_list с изменяемым типом данных (list), который является переменной класса (class variable), а не его экземпляра. Другими словами, список error_list используется совместно всеми экземплярами данного класса, потому что каждый из них хранит ссылку на один и тот же список. Дальше в функции main() несколько раз вызывается функция Parse(), которая каждый раз создает новый экземпляр класса ParseResult и сразу же изменяет атрибут error_list, когда добавляет новый элемент в список при помощи метода append(). Поскольку атрибут совместно используется всеми экземплярами, он автоматически изменяется во всех остальных уже созданных экземплярах этого класса. Чтобы каждый экземпляр класса имел собственное значение атрибута error_list, надо переписать класс примерно так:

class ParseResult:
   def __init__(self, parse_ok):
      self.parse_ok = False
      self.errors_list = [] # создает новый пустой список для каждого экземпляра ParseResult

   def add_error(self, error):
      self.errors_list.append(error)
Правильный ли мой ответ? Будет ли у меня плюсик в репутацию?  ;)

 

 
Плюсик будет  :)
 
Суть   в том, что в Python поля класса - это именно поля класса, а не инстанса. Инстансы работают за счёт того, что, когда происходит  обращаение к полю, которого у инстанса нет, запрос перенаправляется классу.

print('look carefully for object identities')

print('\ndefine Inner')
class Inner:
    def __init__(self):
        print('Inner.__init__(', self, ')')
        
    def __del__(self):
        print('Inner.__del__(', self, ')')

print('\ndefine Outer')
class Outer:
    class_attribute = Inner()
    
    def __init__(self):
        print('Outer.__init__(', self, ')')
        self.instance_attribute = Inner()
        
    def __del__(self):
        print('Outer.__del__(', self, ')')

print('\ncreate OuterInstanceA')
OuterInstanceA = Outer()

print('\ncreate OuterInstanceB')
OuterInstanceB = Outer()

print('\nOuterInstanceA.class_attribute ::', OuterInstanceA.class_attribute)
print('OuterInstanceA.instance_attribute ::', OuterInstanceA.instance_attribute)
print('OuterInstanceB.class_attribute ::', OuterInstanceB.class_attribute)
print('OuterInstanceB.instance_attribute ::', OuterInstanceB.instance_attribute)
print('Outer.class_attribute ::', Outer.class_attribute)
try:
    print('Outer.instance_attribute ::', Outer.instance_attribute)
except Exception as e:
    print('Outer.instance_attribute !', e)

print('\ndelete OuterInstanceA')
del OuterInstanceA

print('\ndelete OuterInstanceB')
del OuterInstanceB

print('\ndelete Outer')
del Outer

print('\nend')

См. результат выполнения  кода   https://rextester.com/SJOH58595

 

Таким образом если необходимо, чтобы каждый инстанс при появлении получал свою собственную копию list() -   надо прописать  создание этой копии в __init__.


Сообщение отредактировал T-800 Danya: 08.02.2019, 23:05:42

  • 0

#9
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

Суть в том, что в Python поля класса - это именно поля класса, а не инстанса.

 

А я разве не то же самое сказал?  :)

 

Таким образом если необходимо, чтобы каждый инстанс при появлении получал свою собственную копию list() - надо прописать создание этой копии в __init__.

 

И об этом в моем ответе то же самое сказано, с примером кода.  :hi:

 

Инстансы работают за счёт того, что, когда происходит обращаение к полю, которого у инстанса нет, запрос перенаправляется классу.

 

А вот тут интересный момент. Вот пример класса с двумя полями, которых тоже вроде бы не будет у "инстанса" (по-русски говоря, у экземпляра класса).

#python 3.5.2

class MyClass:
    year = 1900
    words = ['spam', 'test']

var1 = MyClass()
var2 = MyClass()
var3 = MyClass()

var2.year = 1999
var3.year = 2019
var2.words[0] = 'Hello'
var3.words[1] = 'world'

print(var1.year, var1.words)
print (var2.year, var2.words)
print(var3.year, var3.words)

При выполнении этого кода через тот же самый сервис https://rextester.co...online_compiler получим:

1900 ['Hello', 'world']
1999 ['Hello', 'world']
2019 ['Hello', 'world']

Видим, что атрибут words, как и прежде, это атрибут класса. Он общий (совместно используемый). Изменения этого атрибута в любом "инстансе", как и раньше, приводят к его изменению во всех остальных. Атрибут year в MyClass тоже является атрибутом класса, а не "инстанса". А вот значение атрибута year при его изменении в каждом "инстансе" получилось свое! Причем прописывать его в классе через self не потребовалось. 

 

Кто сможет это правильно объяснить, получит от меня плюсик в репутацию. ;)


  • 1

#10
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Кто сможет это правильно объяснить, получит от меня плюсик в репутацию. ;)

 

Скрытый текст

Сообщение отредактировал T-800 Danya: 09.02.2019, 12:00:32

  • 0

#11
Regi

Regi
  • Завсегдатай
  • 161 сообщений

Буду очень благодарен если хотя-бы подскажите куда копать...

Итак:

есть два массива, скажем таких:

u1=[1,4,2,6,7,3]

x1=[20,43,21,45,32,87]

Количество элементов в двух массивах равное, это важно. Проще говоря каждый n элемент первого массива соотносится к каждому n элементу второго массива.

Далее задаем значение u, например 5.

Задача вычислить значение x.

ТО есть: нужно понять где в первом массиве находится значение u, интерполировать его и на основе этого значения вычислить значение x из второго массива.

Рыл в сторону интерполяции, регрессии, но пока безрезультатно.

Спасибо.


  • 0

#12
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Буду очень благодарен если хотя-бы подскажите куда копать...
Итак:
есть два массива, скажем таких:
u1=[1,4,2,6,7,3]
x1=[20,43,21,45,32,87]
Количество элементов в двух массивах равное, это важно. Проще говоря каждый n элемент первого массива соотносится к каждому n элементу второго массива.
Далее задаем значение u, например 5.
Задача вычислить значение x.
ТО есть: нужно понять где в первом массиве находится значение u, интерполировать его и на основе этого значения вычислить значение x из второго массива.
Рыл в сторону интерполяции, регрессии, но пока безрезультатно.
Спасибо.

ИМХО если каждый n-й элемент массива Х соотвествует одному и только одному n-ому элементу массива U то Вам надо сделать перебор элементов массива U c n=0 дл n=N, определить индекс n для которого будет минимум модуля разности Un и 5 и выбрать из массива X элемент с определенным Вами индексом n, а потом просто взять да и прибавить к нему (Un-5)*[Xn+1 - Xn]/[Un+1 -Un]

Одним словом ИМХО как-то примерно так вот ;)

Сообщение отредактировал T-800 Danya: 12.02.2019, 00:10:59

  • 0

#13
vladimir55

vladimir55
  • Постоялец
  • 401 сообщений

упс!


Сообщение отредактировал vladimir55: 16.02.2019, 16:59:55

  • 0

#14
sinsemilia

sinsemilia
  • В доску свой
  • 3 095 сообщений

 

Где можно пройти курсы Python в Алматы?
 

Я лично научился языку Python просмотрев видеоролики Тимофея Хирьянова на ютубе, он очень хорошо, просто и понятно объясняет. А когда базовые знания получили, потом нужно будет читать онлайн документацию по языку, установить Python на комп, и закреплять теоретические знания практикой.

Добрый день. 

Присоединяюсь к вопросу - может ли кто-нибудь подсказать репетитора по Python? Видео уроки смотрю, но так как учу практически с 0, нужен человек, который базу объяснил бы. Если у кого-нибудь есть люди, напишите, пожалуйста, сюда или в ЛС.  


  • 0

#15
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Добрый день. 
Присоединяюсь к вопросу - может ли кто-нибудь подсказать репетитора по Python? Видео уроки смотрю, но так как учу практически с 0, нужен человек, который базу объяснил бы. Если у кого-нибудь есть люди, напишите, пожалуйста, сюда или в ЛС.

 

Привет!

 

Скажем так, если у Вас есть желание  Изучить Python на реальном Проекте 

 

Добро Пожаловать в Наш Благотворительный Проект см. https://vse.kz/topic...kazakhskom-iaz/

 

ИМХО для Новичка  в принципе  найдется пара Интересных Тасков, что еще надо Запилить :)

 

ЗЫ Если будете пилить Таски по Проекту - Консультировать по Python будем БЕСПЛАТНО :)

 

ЗЗЫ А  если  сумете запилить Таски  досточно ХОРОШО - даже может быть заплатим Вам немножко ДЕНЕГ из  Фонда Проекта ;)


Сообщение отредактировал T-800 Danya: 10.04.2019, 19:54:54

  • 0

#16
sinsemilia

sinsemilia
  • В доску свой
  • 3 095 сообщений

Привет! Скажем так, если у Вас есть желание  Изучить Python на реальном Проекте 

Благодарю вас за предложение, но вежливо откажусь =) 

1) Я прям совсем с 0 начинаю, сейчас изучаю основы програмирования, со мной занимаются, как маленьким с ребенком, все объясняют, нянчатся, указывают на ошибки и терпеливо отвечают на все вопросы. Боюсь, для проэкта, несмотря на то, что он очень интересен, еще не пришло мое время =)

 

2) Есть вопрос - не знаю в какую тему написать, поэтому напишу сюда. Задача простая - улучшить свой скил в data scientist, а именно - работа с бд, автоматизация выгрузки данных, кубы и кейсы, визуализация, машинное обучение. 

Везде пишут, что нужны 2 языка R и Phyton. Вопрос - какой из них "лучше" и полезней в сфере аналитики? Например power bi, насколько я знаю, написан на R.    


  • 0

#17
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Есть вопрос - не знаю в какую тему написать, поэтому напишу сюда. Задача простая - улучшить свой скил в data scientist, а именно - работа с бд, автоматизация выгрузки данных, кубы и кейсы, визуализация, машинное обучение. 
Везде пишут, что нужны 2 языка R и Phyton. Вопрос - какой из них "лучше" и полезней в сфере аналитики? Например power bi, насколько я знаю, написан на R.


Языки в принципе без разницы. Главное Библиотеки для обработки данных под Вашу конкретную Задачу.

Потому что на практике Разработчик всегда идет от Стандартного Решения - Никто же не мастерит Велосипеды c НУЛЯ :) - т.е. есть подходящие библиотеки на Python - пишет на Python, есть под его Задачку  нормальное решение на R - пишет на R :)

 

Благодарю вас за предложение, но вежливо откажусь =) 

 

1) Я прям совсем с 0 начинаю, сейчас изучаю основы програмирования, со мной занимаются, как маленьким с ребенком, все объясняют, нянчатся, указывают на ошибки и терпеливо отвечают на все вопросы. Боюсь, для проэкта, несмотря на то, что он очень интересен, еще не пришло мое время =)

 

 

Ну как хотите. Хотя ИМХО для ПроЭктов Время  обычно  проиходит как правило  еще Вчера, а то даже и Позавчера :)   

 

И вообще как Известно  глаза боятся - а Руки делают ;)  - Вот так вот :)


Сообщение отредактировал T-800 Danya: 11.04.2019, 14:01:23

  • 0

#18
lexx821

lexx821
  • Свой человек
  • 816 сообщений
Добрый день.  Присоединяюсь к вопросу - может ли кто-нибудь подсказать репетитора по Python? Видео уроки смотрю, но так как учу практически с 0, нужен человек, который базу объяснил бы. Если у кого-нибудь есть люди, напишите, пожалуйста, сюда или в ЛС.  

 

 

Я так учился, там всё объяснят с нуля:

Как выучить Python

https://www.youtube....h?v=0a2a7dXJYXM

 

Лекции Тимофея Хирьянова по Python

https://www.youtube....83DFUbm4GeOjjc0

 

Изучение Python в одном уроке за 1 час

https://www.youtube....h?v=x_2QpLcRdeY

 

Python для детей

https://www.youtube....NcBt-c4gdmRVxrx

 

Уроки по Django

https://www.youtube....AqAmD_Cdb9DV-H5

 

Panda 3D (создание компьютерной игры на Python)

https://www.youtube....h?v=9cFtoq8q9sI

 

Распознавание объектов на Python

https://www.youtube....h?v=Uj4O2_dwRiA

 

Создание игры на Python

https://www.youtube....h?v=BZBk4jjbFHk

 

PyMongo

https://www.youtube....h?v=h6M4x9aXx5g


Сообщение отредактировал lexx821: 13.04.2019, 02:35:03

  • 3

#19
sinsemilia

sinsemilia
  • В доску свой
  • 3 095 сообщений

Я так учился, там всё объяснят с нуля:

Спасибо вам огромное за такой подробный ответ и информацию! Спасибо  :hi:


  • 0

#20
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Спасибо вам огромное за такой подробный ответ и информацию! Спасибо 
 

Понимаете, я сам учился программированию, никто меня этому не учил, в начале 90х у нас был дома ПК, когда учился в школе где-то во втором классе меня заинтересеовало программирование, и то потому что был компьютер дома. На выбор тогда было не большое количество компьютерных программ и инструментов для разработок программного обеспеченья на нашем компьютере, тогда на компьютерах не было ни Windows 10, ни MacOS X High Sierra, а была однозадачная MS-DOS 5.00, и такие программы были на выбор: Norton Commander, Turbo C, FoxPro, GW-BASIC, Лексикон, ну и пару компьютерных игр, типа: шахматы battle chess, 2х-мерный платформер keen commander 4, леталка planet of zoom. Дисплей был маленький, хорошо если он выдовал 256 цветов, на такие дисплеи раньше вешали защитный экран, про CD-ROM и звук я вообще молчу, вместо CD-ROM, были дискеты размером 5,25" или 3.5" на 512кбайт или 1,44мбайт, жёсткие диски хорошо если 40мбайт были. Всё это было настолько убогое и уродлевое, но я всё равно как-то научился программировать, потому-что было очень интересно и был упоротый в этом деле, начинал я с Си и Бейсик, не много программировал на FoxPro. В школе в 6-м классе была информатика, нас учили печатать в слепую на клавиатуре спомощью тренажора, и работать в Лексиконе, мы в Лексиконе тексты набирали, и ещё был какой-то тренажёр по изучению программированию. Тогда не было интернета, был только скучный BBS, и там ничего не было, соседи в этом были ноль, компьютерщиков и программистов можно было тогда по пальцам пересчитать, и то их можно было найти в каких-нибудь вычислительных центрах. Эксперементировал сам, методом тыка, часто даже не понимал что делал, иногда моё программирование заканчиволось очень печально. Поэтому трудно дать совет как научиться программированию. Должна быть предрасположенность к программированию https://www.youtube....h?v=bpdduViubII , упорство, зацикленность, сильный интерес. Раньше я учился методом тыка или читал различные книги, а сейчас ищу уроки на ютубе, благодаря ютуб я много чего освоил. В начале 2000х учился в ВУЗе там нас паскалю учили, на западе изучают Java, и то когда приходишь на первый курс, нужно уже знать основы азыка Java. А в колледжах на западе 17 летних подростков учат сразу C++, C#, Java, Perl, PHP, HTML, CSS, JavaScript, MS-SQL, MySQL, ABAP.


  • 0



Темы с аналогичным тегами python, вопросы, задачки, консультации, программирование

Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.