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


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

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

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

Оффлайн Jack Sparrow

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

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

Tkinter, во многие дистрибутивы Python встроен по умолчанию, но ... староват, странноват, несколько старомоден.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн 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

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
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 там уже присутствует. По крайней мере для С++ точно есть.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн alsoijw

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

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
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')
Это не только не имеет смысла, но и неправильно, т.к. после того, как мы создадим пустой список (объект в памяти), мы просто заменим его совершенно другим списком (другим объектом в памяти).
Linux is only free if your time has no value (c) Jamie Zawinski

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

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Уроки по Python, обсуждение
« Ответ #42 : 31 Октября 2013, 12:58:15 »
Кстати, программа с графическим интерфейсом как-то не работает. :'(
Там строчка sys.exit(app.exec_()) должна быть с отступом.
Linux is only free if your time has no value (c) Jamie Zawinski

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.036 секунд. Запросов: 25.