Kirjoittaja Aihe: Python aloittelijoille  (Luettu 17085 kertaa)

walto

  • Käyttäjä
  • Viestejä: 287
  • Ymph...
    • Profiili
    • Reveurs Domain
Python aloittelijoille
« : 28.12.08 - klo:17.49 »
Olen viimein päättänyt aloittaa ohjelmoimisen, ja nettiä selailemalla python olisi hommaan apuvälineiden parhaimmistoa. Aluksi olin ajatellut graafista käyttöliittymää, mutta sitten ratkesi ettei python ole graafinen, ja sen ohjelmat ovat käytännössä kaikki tehtyjä millä tahansa tekstieditorilla, kuten gedit, jota ajattelin käyttää.

Mutta olisi kiva saada esim joku suomenkielinen tutoriaali, ja vastauksia muutamiin kysymyksiin.
1. Jos kirjoitan geditillä ohjelman, mihin muotoon se pitää tallentaa ja miten avaan sen?
2. Miten aloitan/lopetan ohjelman, miten lataan siihen kuvia/ääniä, miten järjestän rivit?
3. Tartteeko pääteikkunaa pitää koko ajan auki kun käyttää pythonia?
registered ubuntu user #23980
http://www.adressit.com/linuxkouluihin

Asus EEE 901, 2 GB DDR2, Jaunty Gnome
Pöytäkone: 2,8 GHz CPU, 1,3 GB RAM, 80, 33, 20 GB SATA ...

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #1 : 28.12.08 - klo:18.07 »
Aluksi olin ajatellut graafista käyttöliittymää, mutta sitten ratkesi ettei python ole graafinen,

Ei kai varsinaisesti mikään ohjelmointikieli ole ”graafinen”, mutta useimmilla pystynee luomaan ohjelman graafiseenkin käyttöliittymään. Pythoniin saa monia GUI-kirjastoja, joista valita. Mutta ensin kannattaa kyllä opiskella ohjelmoinnin perusteet muuten.

Lainaus
1. Jos kirjoitan geditillä ohjelman, mihin muotoon se pitää tallentaa ja miten avaan sen?

Ns. puhtaana tekstitiedostona, jollaisia Gedit vain käsitelleekin. Tiedoston tunniste on Unix-järjestelmissä yhdentekevä, jos tiedostosta vain löytyy ratkaiseva taikarivi:

Koodia: [Valitse]
#!/usr/bin/env python
Nuo #!-alkuiset rivit kertovat järjestelmälle, millä ohjelmalla tiedosto pitäisi ajaa. Lisäksi tosin täytyy antaa tiedostolle suoritusoikeudet:

Koodia: [Valitse]
chmod +x tiedoston_nimi
Lainaus
2. Miten aloitan/lopetan ohjelman,

Yksinkertaisesti kertomalla päätteelle sen nimen, mahdollisesti ./ -alkuisena (= hakee tiedostoa nykyhakemistosta).

Koodia: [Valitse]
./tiedoston_nimi
Lainaus
miten lataan siihen kuvia/ääniä,

Menee niin pitkälle GUI-puolelle, että malta vielä kun saat tuntumaa ohjelmointiin yleensä.

Lainaus
miten järjestän rivit?

Tarkasti :) sillä Python on muotoiluista varsin tarkka kieli. Ennen kaikkea sisennykset eivät ole valinnaisia tai mielivaltaisia vaan tiukan syntaktisesti määritelty.

Lainaus
3. Tartteeko pääteikkunaa pitää koko ajan auki kun käyttää pythonia?

Ei Pythonia käytettäessä mutta ohjelmaasi ajettaessa kyllä, kunnes saat sen GUI-version rakennetuksi. Joissakin editoreissa (esim. Katessa) on myös sisäinen pääte, jolla ohjelman kokeileminen käy nopeammin.

Pythonia kokeiltaessa kannattaa myös mainita IDLE, jolla Pythonin konstien harjoittelu käy näppärästi.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

walto

  • Käyttäjä
  • Viestejä: 287
  • Ymph...
    • Profiili
    • Reveurs Domain
Vs: Python aloittelijoille
« Vastaus #2 : 28.12.08 - klo:18.17 »
... puhtaana tekstitiedostona, jollaisia Gedit vain käsitelleekin. Tiedoston tunniste on Unix-järjestelmissä yhdentekevä, jos tiedostosta vain löytyy ratkaiseva taikarivi:

Koodia: [Valitse]
#!/usr/bin/env python

Kiitoksia nyt aluksi, pitääkös tuo taikarivi olla ensimmäinen rivi vai onko sille jossain muualla mieluinen paikka?
registered ubuntu user #23980
http://www.adressit.com/linuxkouluihin

Asus EEE 901, 2 GB DDR2, Jaunty Gnome
Pöytäkone: 2,8 GHz CPU, 1,3 GB RAM, 80, 33, 20 GB SATA ...

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Python aloittelijoille
« Vastaus #3 : 28.12.08 - klo:18.26 »
Olen viimein päättänyt aloittaa ohjelmoimisen, ja nettiä selailemalla python olisi hommaan apuvälineiden parhaimmistoa.

python on hyvin monipuolinen ja näppärä kieli.

Aluksi olin ajatellut graafista käyttöliittymää, mutta sitten ratkesi ettei python ole graafinen, ja sen ohjelmat ovat käytännössä kaikki tehtyjä millä tahansa tekstieditorilla, kuten gedit, jota ajattelin käyttää.

kaikkia ohjelmointikieliä voi kirjoittaa millä tahansa editorilla. vasta kääntäjä/tulkki muuntaa ne muotoon joka on tietokoneen suoritettavissa. myöskään mikään (minun tuntemani) ohjelmointikieli ei ole 'graafinen' vaan koodia joutuu aina kirjoittamaan käsin, vaikka tietysti koodin tuottamiseen apuvälineitä onkin. pythonillakin voi luoda graafista käyttöliittymään käyttäviä ohjelmia joiden käyttöliittymät on luotu/järjestelty erilaisilla käyttöliittymägeneraattoreilla.

python-scriptejä voi aivan hyvin kirjoitella vaikka juurikin geditillä, mutta suurempien projektien hallinnassa IDE:stä on jonkin verran apua. esim. paketinhallinnan kautta löytyvä spe (stani's python editor) on aika monipuolinen. toki muitakin on. pienempiin projekteihin riittää varsin hyvin mikä tahansa editori, mieluiten sellainen joka osaa syntax highlightingin.

Mutta olisi kiva saada esim joku suomenkielinen tutoriaali, ja vastauksia muutamiin kysymyksiin.

suomeksi olevia oppaita en osaa kyllä neuvoa, mutta niitä luulisi netistä löytyvän. tosin ainakin itse nopealla googlaamisella netistä löytämäni oppaat vaativat jonkin verran kokemusta ohjelmoinnista. englanniksi ihan hyviä oppaita ovat core python ja dive into python josta jälkimmäinen löytyy ilmaiseksi netistä ja on jopa ubuntun paketinhallinnassa nimellä diveintopython.

1. Jos kirjoitan geditillä ohjelman, mihin muotoon se pitää tallentaa ja miten avaan sen?

ihan tavallisena tekstitiedostona utf-8 enkoodauksella (ubuntun oletus) ja mielellään tiedostona jonka pääte on .py. kun ohjelma on kertaalleen tallennettu, osaa gedit syntaksikororstuksenkin. ohjelma ajetaan antamalla se parametrina python-tulkille:
Koodia: [Valitse]
$ python omaohjelma.py
tosin jos ohjelman ensimmäinen rivi on muotoa:
Koodia: [Valitse]
#!/usr/bin/env python
ja tiedostolla suoritusoikeudet, niin sen voi suorittaa omana komentonaan.

2. Miten aloitan/lopetan ohjelman, miten lataan siihen kuvia/ääniä, miten järjestän rivit?

riippuu millaisen ohjelma teet ja miten. tosin en tiedä mitä tarkoitat rivien järjestämisellä.

3. Tartteeko pääteikkunaa pitää koko ajan auki kun käyttää pythonia?

ei. esimerkiksi tuo jo mainitsemani spe on kirjoitettu pythonilla, kuten moni muukin sovellus.
Janne

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Python aloittelijoille
« Vastaus #4 : 28.12.08 - klo:18.28 »
Koodia: [Valitse]
#!/usr/bin/env python
Kiitoksia nyt aluksi, pitääkös tuo taikarivi olla ensimmäinen rivi vai onko sille jossain muualla mieluinen paikka?

pitää, muuten se ei toimi.
Janne

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Python aloittelijoille
« Vastaus #5 : 28.12.08 - klo:19.10 »
Tässä on pari linkkiä suomenkielisiin python-ohjelmointioppaisiin.

solmu.math.helsinki.fi/2004/1/python.pdf
www.it.lut.fi/kurssit/06-07/Ti5210220/materiaali/Python-ohjelmointiopas_LTY2006.pdf

Tuossa ensimmäisessä linkissä neuvotaan aloittamaan ihan sillä pythonin omalla komentotulkilla, eli kun käynnistää päätteen ja kirjoittaa python, niin pääsee pythonin komentotulkkiin jonne voi kirjoittaa python-käskyjä, jotka suoritetaan välittömästi. Tällä tavoin pääsee ikäänkuin katsomaan ohjelmaa sisältäpäin samalla kun se käy.

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #6 : 28.12.08 - klo:19.28 »
ihan tavallisena tekstitiedostona utf-8 enkoodauksella (ubuntun oletus)

Itse asiassa vasta Python 3:ssa taitaa olla UTF-8 oletuskoodauksena, sitä aiemmissa US ASCII. Tämä tarkoittaa, että UTF-8:aa käytettäessä pitää #!-rivin jälkeen tulla heti toisena kommenttirivinä tieto koodauksesta näin:

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

snifi

  • Vieras
Vs: Python aloittelijoille
« Vastaus #7 : 28.12.08 - klo:19.46 »
Suomen kielessä tuohon merkistökoodaukseen törmää käytännössä kun ensimmäisen kerran käyttää ääkkösiä:

Koodia: [Valitse]
print "Python"
Toimii sellaisenaan, mutta...

Koodia: [Valitse]
print "Python"
print "Täällä tänään"

Tuottaa virheilmoituksen:

Koodia: [Valitse]
  File "rounded.py", line 3
SyntaxError: Non-ASCII character '\xc3' in file rounded.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Käytännössä hyvä ohje on ainakin #-kommentteihin käyttää pelkkää latinalaista aakkostoa a..z, muutoin on lisättävä tuo koodausrivi alkuun:

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print "Python"
print "Täällä tänään"



Graafisista työkaluista melkeinpä mieleen tulee ensimmäisenä Glade.

Pythonin ohjeista varmaan parhaat ovat kielen omalla kotisivulla: http://docs.python.org/download.html
« Viimeksi muokattu: 28.12.08 - klo:22.34 kirjoittanut snifi »

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #8 : 29.12.08 - klo:16.16 »
Käytännössä hyvä ohje on ainakin #-kommentteihin käyttää pelkkää latinalaista aakkostoa a..z, muutoin on lisättävä tuo koodausrivi alkuun:

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

Itse en ole kyllä pidätellyt itseäni ääkkösten käytöstä mitenkään: pitää vain muistaa tuo jossakin 2.x-versiossa mukaan tullut pakko käyttää koodauksenmäärittelyä. Kolmosessahan tarpeen pitäisi kadota, kun oletuskoodaukseksi tulee UTF-8, mutta en ole vielä kolmosversiota kokeillut – ei huvita irtautua Ubuntun repoista.

Koodauksen voi muuten Pythonin puolesta kirjoittaa myös isoilla (”UTF-8”), mutta ainakin Emacs nutisee tuosta.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: Python aloittelijoille
« Vastaus #9 : 29.12.08 - klo:18.26 »
en ole vielä kolmosversiota kokeillut – ei huvita irtautua Ubuntun repoista.

eikös tuo python 3 ole jo ubuntun repoissa?. minulla on intrepid ja universen puolella on paketti nimeltä python3.0, jonka olettaisin olevan juurikin sitä mitä sen nimi sanoo.

Janne

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #10 : 29.12.08 - klo:20.04 »
eikös tuo python 3 ole jo ubuntun repoissa?. minulla on intrepid ja universen puolella on paketti nimeltä python3.0, jonka olettaisin olevan juurikin sitä mitä sen nimi sanoo.

Näin näkyy olevan, mutta olen enimmäkseen yhä Kubuntu 8.04.1:ssä (jottei tarvitse tapella KDE 4:n kanssa).
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

walto

  • Käyttäjä
  • Viestejä: 287
  • Ymph...
    • Profiili
    • Reveurs Domain
Vs: Python aloittelijoille
« Vastaus #11 : 29.12.08 - klo:20.26 »
Okei, laitoin tiedoston nimeks joku_ohjelma.py, ja sen sisältä löytyy

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Python"
print "Täällä tänään"

avasin ohjelman päätteessä
Koodia: [Valitse]
python /home/walto/joku_ohjelma.py

Saan päätteeseen
Koodia: [Valitse]
Python
Täällä tänään

miten saan saman erilliseen ikkunaan näytölle?

EDIT: laitoin tossa vähän aikaa sitten threadin uusista usb-kuulokkeistani (toimii nyt aika hyvin), joiden oma äänenvoimakkuusnappula tuottaa näytölle vain pienen palkin jossa lukee 0%. Onko mahdollista, että kun mukavasti harjoittelen koodaamista, saan itse tehtyä linuxin ajurit näille usb-kuulokkeille (Logitech clearchat pro)
EDIT2: niin juu, threadi on osoitteessa http://forum.ubuntu-fi.org/index.php?topic=23629.0
« Viimeksi muokattu: 29.12.08 - klo:20.53 kirjoittanut walto »
registered ubuntu user #23980
http://www.adressit.com/linuxkouluihin

Asus EEE 901, 2 GB DDR2, Jaunty Gnome
Pöytäkone: 2,8 GHz CPU, 1,3 GB RAM, 80, 33, 20 GB SATA ...

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #12 : 29.12.08 - klo:21.11 »
miten saan saman erilliseen ikkunaan näytölle?

Siihen tarvitset jotain GUI-kirjastoa. Tässä esimerkki aika minimaalisesta Hello world -ohjelmasta Tk-kirjastolla:

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Tkinter import *

class TkApp(Frame):
    def __init__(self):
        Frame.__init__(self, None)
        self.pack()
        self.l_hello = Label(self, anchor=CENTER, text='Python\nTäällä tänään')
        self.l_hello.pack({'side': 'left'})

app = TkApp()
app.mainloop()
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

walto

  • Käyttäjä
  • Viestejä: 287
  • Ymph...
    • Profiili
    • Reveurs Domain
Vs: Python aloittelijoille
« Vastaus #13 : 29.12.08 - klo:21.38 »
Kopion koko koodin, ja tein siitä oman tiedoston. Sain näkyville Ikkunan, ja ymmärsin jo, miten lisätään uusi rivi. Asensin samalla python-tk paketin... Miten nyt saan esimerkiksi kuvan samaan kehykseen, ja vaikkapa tekstin näkymään kuvan päällä. Muutakin listaa eri käskyistä olisi kiva saada...
registered ubuntu user #23980
http://www.adressit.com/linuxkouluihin

Asus EEE 901, 2 GB DDR2, Jaunty Gnome
Pöytäkone: 2,8 GHz CPU, 1,3 GB RAM, 80, 33, 20 GB SATA ...

SuperOscar

  • Käyttäjä
  • Viestejä: 4062
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python aloittelijoille
« Vastaus #14 : 29.12.08 - klo:21.45 »
Hyvin lyhyt opastus Tkinteriin löytyy Pythonin kirjaston dokumentaatiosta. Lähes kaikissa referenssinluonteisissa kysymyksissä (mitä elementtejä on jne.) täytyy katsoa Tcl/Tk:n dokumentaatiosta.

Tässä vielä kohtalaisen minimaalinen (= en varsinaisesti ole koskaan opetellut sitä käyttämään ja sovelsin tämän löytämäni yhden tutoriaalin perusteella) esimerkki wxWidgets-kirjastosta, joka on monin tavoin nätimpi mutta aloituskynnys on korkeampi:

Koodia: [Valitse]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

class wxHelloFrame(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        self.create_controls()

    def create_controls(self):
        self.h_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.v_sizer = wx.BoxSizer(wx.VERTICAL)

        self.text = wx.StaticText(self, label="Python\nTäällä tänään")

        self.h_sizer.Add(self.text, 0,)
        self.h_sizer.AddSpacer((5,0))

        self.v_sizer.Add(self.h_sizer, 0, wx.EXPAND)

        self.SetSizer(self.v_sizer)
        self.v_sizer.Fit(self)
        self.SetMinSize(self.v_sizer.GetMinSize())

class wxHelloApp(wx.App):
    def OnInit(self):
        frame = wxHelloFrame(None, title='wxHello')
        frame.Show()
        self.SetTopWindow(frame)
        return True

app = wxHelloApp()
app.MainLoop()

wxWidgetsin asentamiseen riittänee paketti python-wxtools.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

snifi

  • Vieras
Vs: Python aloittelijoille
« Vastaus #15 : 29.12.08 - klo:22.01 »
Tästä linkistä löytyvä video saattaisi myös kiinnostaa sinua, aiheina Python, GTK ja Glade:

http://www.hants.lug.org.uk/cgi-bin/wiki.pl?TechTalks/2ndDecember2006

Svabari

  • Käyttäjä
  • Viestejä: 3
    • Profiili
Vs: Python aloittelijoille
« Vastaus #16 : 07.01.09 - klo:18.46 »

satsuma

  • Käyttäjä
  • Viestejä: 63
    • Profiili
Vs: Python aloittelijoille
« Vastaus #17 : 08.01.09 - klo:18.35 »
Aluksi olin ajatellut graafista käyttöliittymää, mutta sitten ratkesi ettei python ole graafinen,

Ei kai varsinaisesti mikään ohjelmointikieli ole ”graafinen”, mutta useimmilla pystynee luomaan ohjelman graafiseenkin käyttöliittymään. Pythoniin saa monia GUI-kirjastoja, joista valita. Mutta ensin kannattaa kyllä opiskella ohjelmoinnin perusteet muuten.


Ihan vaan sivuhuomautuksena, että on olemassa myös graafisia ohjelmointikieliä. Yksi esimerkki on LabVIEW/G.

http://fi.wikipedia.org/wiki/LabVIEW

walto

  • Käyttäjä
  • Viestejä: 287
  • Ymph...
    • Profiili
    • Reveurs Domain
Vs: Python aloittelijoille
« Vastaus #18 : 25.01.09 - klo:14.12 »
Taas pitkästä aikaa kirjoittelen tänne:

Lainasin kirjastosta kaksi C++ kirjaa, mutta en oikein saa niistä mitään irti. Nyt ensimmäiseksi voisi koodata vaikka ihan päätteessä tai graafisena ikkunana, mutta ihan koneen omilla fonteilla. #class ja muita rivejä näkyi kirjoissa paljon, voiko niitä soveltaa yhteen/vähennys/jako/kerto laskuihin, ja jos voi niin miten?
registered ubuntu user #23980
http://www.adressit.com/linuxkouluihin

Asus EEE 901, 2 GB DDR2, Jaunty Gnome
Pöytäkone: 2,8 GHz CPU, 1,3 GB RAM, 80, 33, 20 GB SATA ...

snifi

  • Vieras
Vs: Python aloittelijoille
« Vastaus #19 : 25.01.09 - klo:17.04 »
Kirjastoissa C++ ohjelmointikirjoihin on helppo törmätä siksi, että niitä on aikoinaan hankittu sinne kohtuu paljon, ja ne ovat jääneet käyttämättöminä hyllyille lojumaan. Älä kuitenkaan anna tämän asian johdatella kiinnostustasi ohjelmointikieliin.

Python on tällä hetkellä ohjelmointikielistä ns "state of the art". Luettuani ohjelmointikokemuksiasi tähän mennessä, voisin suositella, että jätät C++ oppaat selailuasteelle, ja keskityt Pythoniin. Python on suurimpaan osaan ohjelmointitöitä tällä hetkellä paras olemassaoleva työväline.