Se lecture 0
Följ Functions, Variables och pausa gärna för att prova exemplen.
Öppna Harvard vecka 0 ↗Lektion 0 · Cirka 45 min genomgång
Från din första utskrift till egna funktioner som tar emot information, bearbetar den och lämnar tillbaka ett resultat.
Vi börjar med en enda instruktion. Varje nytt tecken och begrepp förklaras sedan i den ordning det används.
print("Hej, världen!")Hej, världen!Före genomgången
Harvards föreläsning är cirka 1 timme och 46 minuter. Se den före lektionen och använd denna sida som svensk repetition och uppslagsverk.
Följ Functions, Variables och pausa gärna för att prova exemplen.
Öppna Harvard vecka 0 ↗Skapa lektion_00 i kursmappen och öppna den i VS Code.
Skriv koden själv. Målet är att träna syntax och förstå felmeddelanden.
Harvards demonstrationer använder ofta den webbaserade miljön cs50.dev. Här arbetar du lokalt i VS Code med den Pythoninstallation som kommer från Anaconda. Skapa en .py-fil, spara och kör med Run Python File eller i VS Codes terminal.
Dagens karta
Ordningen följer hur information rör sig genom ett litet program.
8 min
8 min
10 min
8 min
11 min
Programmeringens verb
En funktion är återanvändbar kod som utför en bestämd uppgift. Python har inbyggda funktioner, och snart skriver du egna.
I print("Hej!") är print funktionens namn. Parenteserna gör raden till ett funktionsanrop: en uppmaning till Python att köra funktionen. Text inom citattecken, som "Hej!", kallas en sträng och används för att representera text. Här är strängen ett argument — det konkreta värde som skickas till funktionen.
print(värde)Tar emot: ett eller flera värden. Gör: omvandlar dem till läsbar text och visar texten i terminalen. Lämnar tillbaka: None; utskriften är en bieffekt.
str i Python.# print har bieffekten att text visas
print("Hej, världen!")Hej, världen!Ett SyntaxError betyder att Python inte kan läsa programmets form. Läs sista raden i felmeddelandet, kontrollera den markerade raden och leta först efter saknade citattecken, parenteser eller kolon.
Programmets minne
input(prompt) tar emot en valfri frågetext, visar den, väntar tills användaren trycker Enter och lämnar tillbaka det inskrivna som en sträng. Själva Enter-tecknet följer inte med. En variabel ger returvärdet ett namn som programmet kan använda senare.
Python kör först input(...). Returvärdet placeras sedan i variabeln namn. Likhetstecknet betyder här tilldela, inte ”är matematiskt lika med”.
namn←input(...)Ett variabelnamn bör beskriva vad värdet betyder: namn är tydligare än x. Använd gemener och understreck, exempelvis fornamn_efternamn.
En f-sträng är en formaterad sträng: skriv f före det första citattecknet. Det som står mellan klammerparenteser, exempelvis {namn}, är ett uttryck — kod som Python räknar ut till ett värde. Om namn innehåller "Ada" blir f"Hej, {namn}!" texten "Hej, Ada!".
namn = input("Vad heter du? ")
print(f"Hej, {namn}!")Vad heter du? AdaHej, Ada!# Normalisera namnet innan det visas
namn = namn.strip().title()En kommentar börjar med #. Kommentera avsikten, inte sådant som redan är uppenbart.
# Fråga efter ett namn
# Ta bort extra blanksteg
# Skriv en personlig hälsningPseudokod bryter ned problemet i hanterbara steg innan du bestämmer exakt Pythonkod.
Datatypen str
En datatyp är en kategori som talar om vad ett värde betyder och vilka operationer som är möjliga. Textvärden kallas strängar och har datatypen str.
En metod är en funktion som hör till ett visst värde eller en viss datatyp och anropas efter en punkt. I namn.strip() hör metoden strip till strängen i namn. När anrop kedjas, som i namn.strip().title(), blir returvärdet från den första metoden det värde som nästa metod arbetar med. Strängmetoder ändrar inte originalsträngen utan lämnar tillbaka en ny sträng.
strip()Utan argument: tar bort blanktecken i början och slutet. strip(".") kan i stället ta bort angivna tecken från kanterna.title()Utan argument: lämnar ny text där varje ord får inledande stor bokstav. Det är enkel formatering, inte en säker regel för alla personnamn.replace(gammalt, nytt)Tar emot två strängar: ersätter alla förekomster av den första med den andra och lämnar tillbaka den nya texten.lower()Utan argument: lämnar tillbaka en ny sträng med gemener.split(separator)Med eller utan separator: delar texten och lämnar tillbaka en lista med strängar. Se exemplen nedan.namn = input("Namn: ")
namn = namn.strip().title()
print(f"Hej, {namn}!")Hej, Ada Lovelace!namndelar = "Ada Lovelace".split()
datumdelar = "2026-08-30".split("-")
print(namndelar)
print(datumdelar)['Ada', 'Lovelace']['2026', '08', '30']split delar vid en vald gränsUtan argument delar split() vid blanktecken, exempelvis mellanslag, tabbar och radbrytningar. Flera blanktecken i följd behandlas som en gräns. Skickar du in en separator delas strängen i stället vid just den texten: split(",") delar vid kommatecken och split("-") vid bindestreck.
Returvärdet är en lista: en ordnad samling värden inom hakparenteser. Här består listan av strängar. Listor behandlas mer utförligt senare i kursen.
"Ada Lovelace".split()→["Ada", "Lovelace"]"röd,grön,blå".split(",")→["röd", "grön", "blå"]I fornamn, efternamn = input(...).split() ska listan packas upp i exakt två variabler. Ett namn med ett eller tre ord ger därför ValueError.
int och float
input lämnar alltid tillbaka str. Funktionen int(värde) försöker skapa ett heltal och float(värde) ett decimaltal. De lämnar det nya talet eller ger ValueError om en sträng inte kan tolkas som det begärda talet.
x = int(input("x: "))
y = int(input("y: "))
resultat = x + y
print(f"Summan är {resultat}")Summan är 12strtext, till exempel "12"
intheltal, till exempel 12
floatdecimaltal, till exempel 12.5
"2" + "3" blir "23", medan 2 + 3 blir 5. Värdena ser lika ut för människan men har olika typer. De inre anropen körs först: i int(input(...)) körs därför input före int.
En operator är ett tecken som anger vilken beräkning Python ska göra. Flera operatorer i samma uttryck följer en bestämd operatorprioritet: exempelvis beräknas ** före *. Parenteser gör önskad ordning tydlig.
+addition-subtraktion*multiplikation/division, ger float//heltalsdivision%rest**potensround(värde, antal_decimaler) tar emot ett tal och ett valfritt antal decimaler och lämnar tillbaka ett avrundat tal. Exempelvis ger round(3.14159, 2) värdet 3.14. I formatangivelsen {värde:.2f} inleder kolonet instruktionen, .2 betyder två decimaler och det avslutande f betyder visning som decimaltal. Det är alltså inte samma f som står före citattecknet och skapar själva f-strängen. Formateringen ändrar inte det lagrade värdet.
Python använder punkt i decimaltal: skriv 3.14, inte 3,14.
pris = 125 / 3
print(f"Pris: {pris:.2f} kr")Pris: 41.67 krÅteranvändbar kod
Nyckelordet def inleder en funktionsdefinition. Ett namn i definitionens parenteser är en parameter; det konkreta värdet i ett senare anrop är ett argument. return lämnar resultatet till anroparen.
def kvadrat(tal):
return tal ** 2
svar = kvadrat(5)
print(svar)25Räckvidd, ofta kallad scope, beskriver var ett namn kan användas. Parametern tal är lokal: den finns bara inne i funktionen medan anropet pågår.
def inleder definitionen.tal är en parameter och ett lokalt namn.return lämnar tillbaka värdet.kvadrat(5) är 5 argumentet.print(värde)Skapar en utskrift som bieffekt. Om en funktion saknar return lämnar den värdet None, Pythons särskilda markering för ”inget användbart värde”.
return värdeGer anroparen ett värde som kan sparas, räknas vidare med eller skrivas ut.
Ett huvudprogram är den övergripande arbetsgång som knyter ihop programmets delar. Namnet main är en vanlig konvention, inte ett särskilt Python-nyckelord. Funktionen körs bara eftersom raden main() anropar den. Python kör filen uppifrån och ned, så anropet placeras efter funktionsdefinitionerna.
En hjälpfunktion får stå efter definitionen av main, så länge den hinner definieras innan main() faktiskt anropas.
def main():
namn = input("Namn: ")
print(halsning(namn))
def halsning(namn):
return f"Välkommen, {namn.strip().title()}!"
main()Välkommen, Ada!Efter genomgången
Läs alltid specifikationen, skriv pseudokod och testa flera indata. Fullständiga lösningar visas inte här.
Träna input, str.lower() och print.
Ersätt blanksteg med tre punkter med hjälp av replace.
Skriv funktionerna convert och main. Skilj definition från anrop.
Omvandla indata till int och beräkna energi från massa.
** beräknas före *; använd parenteser om ordningen ska synas tydligare.Omvandla strängar som börjar med $ respektive slutar med % till float.
Markera exakt indata, utdata och eventuella funktionsnamn.
Skriv 3–5 rader pseudokod innan du skriver Python.
Ta ett litet steg i taget och kör ofta.
Jämför resultatet tecken för tecken med specifikationen.
Beskriv med egna ord vad varje rad bidrar med.
Kontrollera förståelsen
Om någon punkt känns osäker: gå tillbaka till motsvarande avsnitt och skriv ett eget minimalt exempel.
Jag sätter f före citattecknet och placerar uttryck inom { och }, exempelvis f"Hej, {namn}!".
En metod hör till ett värde och anropas efter en punkt; en funktion anropas med sitt namn; en operator är ett tecken som anger en beräkning.
Parametern är namnet i funktionsdefinitionen; argumentet är det konkreta värdet vid anropet.
input ger alltid text. Omvandlingen gör numeriska beräkningar möjliga.
print visar något; return lämnar tillbaka ett värde.
Börja längst ned, hitta fil och rad, och kontrollera sedan syntax och datatyp.
Jag använder def, kolon, indrag, ett tydligt namn och vid behov return.
Fördjupning och original
Genomgången kombinerar kursens eget material med Harvards aktuella lecture 0. Harvards sidor är på engelska och kan användas för repetition.