Ответы пользователя по тегу Python
  • Язык для олимпиадного программирования?

    @Alexander1705
    Python не подойдёт для школьного олимпиадного программирования, так как ваши программы должны будут улаживаться в определённое время. Например, на Всеукраинской ученической олимпиаде по программированию доступны только Pascal, C и C++.

    Учите С++. Я начинал учить именно с него, и хотя возникали некоторые сложности, сейчас ни о чём не жалею, так как теперь легко осваивать любые другие языки, в том числе и Python. На С++ писать не сложно, нужно лишь немного времени, чтоб привыкнуть к синтаксису.

    Могу порекомендовать книгу "Язык программирования С++" Стенли Липпмана.
    Ответ написан
    Комментировать
  • Как правильно закончить цикл?

    @Alexander1705
    В цикле у вас не изменяются значения ни b, ни d. Так что, если условие изначально верно, оно никогда не станет ложным.
    a = 'False'
    c = 'Try again'
    b = input('4*100-54=')
    d = '346'
    while b != d:
        print(a)
        print(c)
        b = input('4*100-54=')


    P.S. Пользуйтесь тегом <code lang="python"></code>
    Ответ написан
    1 комментарий
  • Как избежать статических списков в классах python?

    @Alexander1705
    Когда вы объявляете переменные-члены, так как вы это сделали, они связаны с классом, а не с объектом. По аналогии с С++, вы создали переменные-члены elements и N статическими.

    Вам нужно создавать переменные-члены в конструкторе, а не в определении класса:
    class Vector:
    
      def __init__(self, N):
        self.elenent = []
        self.N = N
        for i in range(N):
          self.element.append(0)
    
      def __str__(self):
        out_str = ""
        for i in range(self.N):
          out_str = out_str +  str(self.element[i]) + " "
        return out_str
    
      def generate(self):
        random.seed()
        for i in range(self.N):
          self.element[i] = float(random.randint(1, 100))


    Или использовать специальную переменную __slots__:
    class Vector:
    
      __slots__ = ['element', 'N']
    
      def __init__(self, N):
        self.elenent = []
        self.N = N
        for i in range(N):
          self.element.append(0)
    
      def __str__(self):
        out_str = ""
        for i in range(self.N):
          out_str = out_str +  str(self.element[i]) + " "
        return out_str
    
      def generate(self):
        random.seed()
        for i in range(self.N):
          self.element[i] = float(random.randint(1, 100))


    Отличие в том, что во втором случае вы уже не сможете добавить другие переменные-члены, и объекты будут занимать меньше памяти.
    Ответ написан
    Комментировать