Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Python -- är inte det en orm? (del 1)

Postad 2004-05-24 av Simon Dahlbacka i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 8147, Betyg: 88%

Förord

Ett skriptspråk som används mer och mer är Python, även om det kanske inte är så känt i alla kretsar ännu. I denna artikelserie ska jag introducera python och ta upp grunderna i python programmering.
Innehåll
  » Så vad är då Python?
  » Skaffa Python
  » Tolken
  » Hello World
  » Vilkorssatser
  » Använda kod från fil
  » Iterationer
  » Funktioner
  » Datatyper
  » Moduler
  » Exempel :: Hårddisksstatus


Så vad är då Python?

Python är ett interpreterat, objektorienterat språk med dynamisk och stark typning. Python i sej själv är relativt litet och enkelt att lära sej, men kommer med "batterier inkluderade", dvs. dess standardbibliotek innehåller en massa nyttig funktionalitet.
Speciellt är att språket använder indentering som blockavgränsare, vilket kan kännas konstigt först, men är praktiskt och tvingar fram "snygg" kod. Syntaxen är även sådan att den mer eller mindre är "exekverbar pseduokod".

Python program är plattformsoberoende och kan köras på alla plattformar som tolken portats till. (vilket inkluderar alla "vanliga" plattformar..)

Python utvecklas under en open-source licens och du kan fritt använda python även i kommersiella sammanhang.


Skaffa Python

För att börja använda python behöver du ha python tolken (eng: interpreter) installerad.
Denna kan gratis laddas hem från den officiella hemsidan .
För windows användare kan ActivePython () rekommenderas. Denna distribution innehåller förutom det officiella paketet från python.org även ett antal
windows-specifika moduler som kan vara bra att ha senare samt en sökbar hjälpfil/API referens.


Tolken

Eftersom python är ett interpreterat språk behövs en tolk. Om python är installerat korrekt så startas den genom att skriva python i ett kommandofönster.

Det borde då se ut ungefär som följande:

C:\Documents and Settings\Simon>python
Python 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Några tips för att effektivt använda tolken:

  • >>> är den normala prompten som betyder att tolken väntar på input.
  • ... är prompten som visas när någonting fortsätter från följande rad
  • help() visar hjälp om
  • dir() listar attribut/funktioner på




Hello World

"Standardenligt" börjar vi med ett litet "Hello world" program, men först ska vi starta python tolken.

Nu är det dags att skriva vår första rad med python kod. Ett simpelt hello world program ser ut som följande:

print "Hello World"

Det var väl enkelt? print skriver alltså ut texten till skärmen. Och en sträng definieras antingen med dubbla citationstecken ("") eller med enkla citationstecken ('').


Vilkorssatser

Än så länge kan vi bara skriva ut text till skärmen, och att bara göra det blir ju lite tråkigt i längden. Därför ska vi nu även lära oss vilkorssatser.

svar = 42

if svar == 42:
print "Svaret på allt är", svar
elif svar == 43:
print "Svaret %d är lite fel" % svar
else:
print "Svaret är väldigt fel"

Det var mycket nytt på en gång, först initialiserar vi variabeln svar till 42, typdeklarationer behövs inte. Vi ser också att parenteser inte behövs runt villkoret, (men parenteser kan naturligtvis användas). Blocken som hör till if, elif och else markeras med indentering. Elif och else blocken är valbara (optional).

print "En sträng", "en annan sträng", 42

Skriver ut dom båda strängarna och siffran 42 efter varandra separerade med ett mellanrum. För strängformatering kan även stränginterpolering, á la C:s printf användas, i så fall används formatsträng % variabel.

>>>print "Svaret är %d" % 42

skriver ut: Svaret är 42


Använda kod från fil

Nu tänker du säkert att det är jobbigt att skriva in allt hela tiden, det måste finnas ett enklare sätt. Det gör det, spara koden i en fil filnamn.py och exekvera den sedan med kommandot python filnamn.py.


Iterationer

I python finns det for och while loopar.

for element in :
;

eller

while :
;

En lista skrivs med hakparenteser

minlista = [1,2,3,4,5]

Nu innehåller minlista en lista med elementen 1 tillochmed 5. Listans indexering är 0 baserad. Vill vi accessera det t.ex. tredje elementet i listan kan vi göra det med minlista[2]


for i in [1,2,3,4,5]:
print "Siffra", i

skriver ut:
Siffra 1
Siffra 2
Siffra 3
Siffra 4
Siffra 5
Vill vi göra samma sak med en while loop blir det

i = 1
while i < 6:
print "Siffra", i
i += 1

Att göra en lista att iterera över är en så vanlig funktion så det finns en inbyggd funktion som hjälper till att göra en sån. range([start,] stop[, step]) returnerar en lista startandes från start (kan lämnas bort, defaultvärde är 0) till, men exklusive stop, med steglängden step. Skriver vi om vår for loop användandes range kan vi skriva:

for i in range(1, 6):
print "Siffra",i



Funktioner

Än så länge har vi bara skrivit sekvensiell kod. Funktioner är bra för att dela upp programmet i logiska delar. Vi tänker oss att vi behöver göra en funktion som räknar antalet vokaler a:n (stora och små) i en sträng.

# definiera funktionen countVovels som tar en parameter
def countVovels(mystring):
"""Detta är en sk. docstring, den kan användas för att dokumentera
funktionen och dess parameter samt returvärden. Den kan fortsätta
på flera rader samt innehålla citationstecken 'så här' eller "så här"

En docstring börjar med tre stycken citationstecken och avslutas
med tre stycken citationstecken"""

antal = 0
# iterera över tecknena i en lower-case kopia av strängen
for character in mystring.lower():
if character == "a":
antal = antal + 1
return antal

En funktion definieras med def funktionsnamn(parameter, parameter2):. Funktionen är ett block, som indenteras. Vi har inga a:n i början så antal initialiseras till 0. För att vi ska kunna kolla både stora och små a:n gör vi en kopia av strängen mystring med bara små bokstäver. sträng metoden .lower() returnerar en kopia med endast gemener. Vi använder oss av att vi kan iterera över de enskilda tecknena i en sträng. Slutligen returnerar vi antalet hittade a:n med hjälp av return. Allting som finns mellan ett # tecken till radens slut tolkas som en kommentar.


test = "Hmm.. hur många a:n finns i den här meningen. Alla A:n ska räknas"
print "Hittade", countVovels(test),"a:n i meningen"
# Skriver ut "Hittade 7 a:n i meningen"



Datatyper

Python har följande grundläggande datatyper inbyggda

  • Heltal ex. 42
  • Decimaltal ex 1.0
  • Komplexa tal ex. 1+0.5j
  • Strängar ex "Hello World", 'Hello World', """Hello World""", '''Hello World'''

Alla grundläggande datatyper är ej muterbara (eng. immutable).

Förutom dessa grundläggande datatyper finns även några sammansatta typer inbyggda.

  • listor - muterbar (eng. mutable), kan innehålla heterogen data. ex. [1,2,3], ["ett", 2.0, 3], delvis jämförbar med en java.lang.Vector i java eller vector i STL.
  • dictionaries - muterbar, namn -> värde mappning, kan även den innhålla heterogen data. ex. {"namn":"värde", "Pelle":123}, delvis jämförbar med en hashtabell eller map i STL.
  • tuppler - "listaktig" datatyp som är immutable. (1,2,3), ("ett", 2.0, 3)



Moduler

För att använda funktionalitet som finns i standardbiblioteket måste vi först importera modulen/paketet som denna finns i. Exempelvis finns dom matematiska funktionerna som sqrt, sin och cos i modulen math. Vi kan importera moduler med hjälp av import och sedan referera till modulnamn.funktion.

import math #importera math modulen
print math.sqrt(3) #skriv ut kvadratroten av tre




Exempel :: Hårddisksstatus

Ibland kanske man undrar vart allt hårdskiveutrymme tagit vägen, låt oss göra ett litet program som tar reda på det.

Vi vet* att i os modulen finns en funktion som rekursivt traverserar katalogerna och returnerar en tuppel (nuvarande katalog, lista med katalognamn, lista med filnamn). Den verkar vara lämplig för vårt ändamål. Vi vet också att i os.path modulen finns en funktion getsize(filnamn) som returnerar storleken på en fil, men den behöver sökvägen och inte bara ett filnamn. Sökvägen kan t.ex. fås med funktionen join(katalog, filnamn) som sätter ihop katalognamnet med filnamnet.

*Hur kan vi "veta" vad som finns var? Ett enkelt sätt är att använda API referensen som installerades om du installerade ActivePython. Annars kan man titta i Global module index()



#importera os modulen
import os
#importera os.path modulen
import os.path

#loopa över katalogerna
for current, directories, files in os.walk('.'):
# Skriv ut katalognamnet
print current, "consumes",
# initialisera storleksräknaren
size = 0
# iterera över varje fil
for filename in files:
# addera filens storlek till den totala storleken
size += os.path.getsize(os.path.join(current, filename))
# skriv ut storleken i kilobyte
print size / 1024,"kB in", len(files), "files."


Det gick väl enkelt? Vi fortsätter python introduktionen i nästa kapitel.

PS. kommentarer, tips, klagomål på artikeln samt även ideér vad som bör tas upp i dom kommande delarna mottages med tacksamhet!
Upp

1 Kommentarer


  1. Benny Skogberg
    24 jan 2009

    Hur fungerar det att bygga GUI i Python?

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
1 150
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies