Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Уроки по Python, обсуждение  (Прочитано 29335 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #30 : 27 Октября 2013, 18:35:21 »
PyQt4, на мой взгляд, наиболее перспективный и удобный. Наиболее кроссплатформен. Можно быстро. писать прототип программы на питоне, а потом, если необходимо, переписывать ее на C++.

PyGTK, но меньше документации и не так распространен.

Tkinter, во многие дистрибутивы Python встроен по умолчанию, но ... староват, странноват, несколько старомоден.
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #31 : 27 Октября 2013, 18:36:56 »
Grigory Smirnov,
В пятом уроке про глобальные переменные стоит добавить следующее:
Глобальная переменная то будет доступна во всех функциях, но только для чтения. Если надо ее изменить, то внутри функции нужно еще раз ее объявлять
(Нажмите, чтобы показать/скрыть)
ИМХО, глобальные переменные лучше объявлять вне функций, на то они и глобальные.
Код: (python) [Выделить]
b = 'Some text' # глобальная переменная. global не нужен
def simple():  # в этой функции b доступна только для чтения
   print b
def simple():
   global b   # теперь глобальную переменную можно изменить
   b = ''

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, обсуждение
« Ответ #32 : 27 Октября 2013, 19:09:44 »
Jack Sparrow, мне тоже больше Qt нравится.
RingOV, хорошо, но шестой урок будет про модули :|
« Последнее редактирование: 28 Октября 2013, 12:17:54 от Grigory Smirnov »

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #33 : 27 Октября 2013, 19:46:59 »
Grigory Smirnov,
Но в пятом уроке, про функции, упоминаются глобальные переменные.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, обсуждение
« Ответ #34 : 28 Октября 2013, 18:31:57 »
Добавил шестой урок и немного обновил заголовок (красная плашка new :))

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #35 : 29 Октября 2013, 22:05:50 »
PyQt4, на мой взгляд, наиболее перспективный и удобный...
А как его установить?
tot-Aspire-4315 tot # apt-get install PyQt4
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
E: Не удалось найти пакет PyQt4
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #36 : 29 Октября 2013, 22:34:35 »
Информация отсюда:

Python 2.7
sudo apt-get install python-qt4
Python 3.x
sudo apt-get install python3-qt4
GUI Designer
sudo apt-get install qt4-designer
Если Линукс на основе KDE, то, скорее всего, PyQt4 там уже присутствует. По крайней мере для С++ точно есть.
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #37 : 29 Октября 2013, 23:31:11 »
Jack Sparrow,
А зачем sudo в начале? Нельзя ли написать su, ввести пароль 1 раз, работать спокойно?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #38 : 30 Октября 2013, 10:55:27 »
Зачем на двери замок? Открыл один раз и ходи спокойно.

Кстати, по поводу объявления переменных. В традиционном смысле слова в Питоне этого нет, т.е. их не нужно сперва декларировать. Т.е. в Питоне можно использовать переменные сразу же. Но часто возникает необходимость сперва инициализировать переменную каким-либо значением, иначе ее нельзя будет использовать.

Допустим, например, нам нужно подсчитать сумму цифр от 1 до 10:
Код: (Python) [Выделить]
sum = 0
for i in range(1, 11):
    sum = sum + i

print(sum)
Здесь как переменная sum, так и i имеют тип int, но sum нужно сначала инициализировать нулем, т.к. она будет накапливать значения, а вот i можно использовать сразу же. Мы не задаем i предварительного значения.

То же самое касается списков и словарей. Часто нужно сперва создать пустой список или словарь, чтобы потом уже можно было добавлять в него значения. Например, составим список чисел от 1 до 100, которые делятся на 3:
Код: (Python) [Выделить]
t = []
for i in range(1, 101):
    if i % 3 == 0:
        t.append(i)

print(t)
Опять же, нужно сперва создать пустой список t. Без этого мы не сможем добавлять в него элементы. Но если есть возможность создать список сразу, то нет необходимости создавать сначала пустой, а потом добавлять в него элементы. Например:
Код: (Python) [Выделить]
letters = list('hello')Функция list() берет любую последовательность и возвращает список. Поэтому мы просто присваиваем этот список переменной letters. Нам нет необходимости делать так, например:
Код: (Python) [Выделить]
letters = []
letters = list('hello')
Это не только не имеет смысла, но и неправильно, т.к. после того, как мы создадим пустой список (объект в памяти), мы просто заменим его совершенно другим списком (другим объектом в памяти).
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

sasha30

  • Гость
Re: Уроки по Python, обсуждение
« Ответ #39 : 30 Октября 2013, 23:43:10 »
Спасибо большое:)) очень полезная статья))
вот немного балуюсь:
# -*- coding: iso-8859-15 -*-
print 'Программа для вычисления силы тяжести(в ньютонах)\n\t\t\t\tCopyright by Sasha'
m=int(input("Введите массу в килограммах: "))
f=m*9.8
print 'Сила тяжести:', f, 'Н'

Создайте файл с расширением .py и запустите его в терминале:
python имяфайла.py
В кратце поясню:
Сначала мы вводим кодировку, в которой программируем
Потом с помощью print выводим надпись первоначальную
после вводим массу(именно число) с помощью int(input())
из курса физики f(тяж)=mg ,g =9.8
продолжим писать программу задаем переменную:
f=m*9.8m - масса, которую пользователь введет.
затем выводим на экран полученное значение. всё очень просто :)
хочу обратить внимание, текст вводить надо вот так:
print 'текст'а чтобы вывести полученную переменную, надо вводить вот так:
print имяпеременнойв нашем случае переменная f(можете изменить название на какое захотите, главное, везде тогда изменить)



P.S:
можно в utf-8 делать, но тогда придется перед текстом, написанным кириллицей "u" подписывать
\n - переход на другую строку
\t - пробел
А в PyQt4 можно использовать html теги :)

Пользователь решил продолжить мысль 30 Октября 2013, 23:48:59:


Можно еще побаловаться с python-qt4 :)
Для начала установить PyQt4:
sudo apt-get install python-qt4
Затем создаем .py файл вот с таким содержанием:
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)
    label = QtGui.QLabel(u"Здесь ваш текст!")
    label.show()
sys.exit(app.exec_())

В общем указываем сначала кодировку
Потом импортируем все, что нам требуется
затем указываем label значение его
потом указываем, чтобы label отображался - label.show
Можете использовать HTML теги при вводе текста.(правда у меня далеко не все теги работают, не знаю почему)

После сохраняем и просто запускаем)
Повторюсь - нужно установить PyQt4 иначе ничего работать не будет.

Код программы, которая на скриншоте:
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)
    label = QtGui.QLabel(u"<b>Привет мир!</b><br>Вообще не шутя!<br>Copyright by Sasha, 2013")
    label.show()
sys.exit(app.exec_())
« Последнее редактирование: 30 Октября 2013, 23:51:49 от sasha30 »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #40 : 30 Октября 2013, 23:58:47 »
sasha30, программируешь решебник по физике? Молодец! :)
Кстати, программа с графическим интерфейсом как-то не работает. :'(
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

sasha30

  • Гость
Re: Уроки по Python, обсуждение
« Ответ #41 : 31 Октября 2013, 08:22:04 »
чтобы работала, нужно установить python-qt4
sudo apt-get install python-qt4
да там, что с физикой, это просто пример ))
т.е дана формула изначально, пользователь вводит значение, значение подставляется в формулу и выводится результат

Пользователь решил продолжить мысль 31 Октября 2013, 09:38:18:
на всякий случай проверил. все работает, если у вас установлен python и python-qt4



слева сама гуи программа, справа ее код
====================================================================================================================
Вот тоже можно немного побаловаться, поимпровизировать:
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui

class TextKnopka(QtGui.QWidget):
    def __init__(self,*args):
        QtGui.QWidget.__init__(self,*args)
        self.setWindowTitle(u"Текст и кнопка")
       
        label = QtGui.QLabel(u"<b><font color=darkblue>Привет мир!</font></b>")
        button = QtGui.QPushButton(u"Выход")
        QtCore.QObject.connect( button, QtCore.SIGNAL("clicked()"), app, QtCore.SLOT("quit()") )
        layout = QtGui.QHBoxLayout()
        layout.addWidget(label)
        layout.addWidget(button)
        self.setLayout(layout)
if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)
    textknopka = TextKnopka()
    textknopka.show()
    sys.exit(app.exec_())



Чтобы все работало, нужно, чтобы был установлен python-qt4
В кратце про код:
сначала указываем кодировку(в нашей кодировке перед каждым текстом, написанным кириллицей, надо подписывать u)
потом импортируем все, что нам нужно
потом создаем класс, называем его как хотим, в нашем случае TextKnopka
Указываем заголовок окна
self.setWindowTitle(u"Текст и кнопка")потом пишем, какие элементы у нас будут на окне, и их запрограммируем
label = QtGui.QLabel(u"<b><font color=darkblue>Привет мир!</font></b>")
        button = QtGui.QPushButton(u"Выход")
        QtCore.QObject.connect( button, QtCore.SIGNAL("clicked()"), app, QtCore.SLOT("quit()") )

label - текст
button - кнопка с надписью
а следующая строка программирует кнопку, так, чтобы при нажатии на нее, программа закрывалась
с помощью  layout, располагаем все это чудо
в конце программы вводим
textknopka.show()чтобы всё это чудо отобразилось :)
Не забывайте!Нужно установить python-qt4 чтобы все это работало!
sudo apt-get install python-qt4
« Последнее редактирование: 31 Октября 2013, 09:57:34 от sasha30 »

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #42 : 31 Октября 2013, 12:58:15 »
Кстати, программа с графическим интерфейсом как-то не работает. :'(
Там строчка sys.exit(app.exec_()) должна быть с отступом.
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

sasha30

  • Гость
Re: Уроки по Python, обсуждение
« Ответ #43 : 31 Октября 2013, 17:19:27 »
у меня перед этой командой отступа нема
и все работает)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #44 : 31 Октября 2013, 17:31:37 »
Оказалось нужно запускать так: python имя_файла.py(файлы .py не ассоциированы с python)
И кстати вместо объяснений под текстом лучше объяснение в тесте
Код: (python) [Выделить]
# -*- coding: utf-8 -*-
#В общем указываем сначала кодировку

import sys
from PyQt4 import QtGui, QtCore
#Потом импортируем все, что нам требуется

if __name__=="__main__":
    app = QtGui.QApplication(sys.argv)
    label = QtGui.QLabel(u"Здесь ваш текст!")
    #затем указываем label значение его   
    #Можете использовать HTML теги при вводе текста.
    #(правда у меня далеко не все теги работают, не знаю почему)
    label.show()
    #потом указываем, чтобы label отображался - label.show
sys.exit(app.exec_())
(Так читать удобнее)
PS Как программировать анимацию?
« Последнее редактирование: 31 Октября 2013, 17:58:53 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.