Indata & Utdata
Teori expand_more
1. Indata & Utdata
De flesta datorprogram är uppbyggda enligt principen att de tar in information från användaren t.ex. något som skrivs in med tangentbordet.
Den information datorprogrammet får kallas indata.
Sedan används den informationen (indatat) till att beräkna något. Slutligen presenteras det beräknade resultatet för användaren på t.ex. skärmen.
Det kallas utdata.
input() används för att ta emot indata från tangentbordet.
print() används för att skriva ut data till konsolfönstret.
1.1 Avrunda decimaltal
Med funktionen round() går det att avrunda decimaltal innan de skrivs ut.
# Exempel - Avrunda decimaltal med round()
print(1/6)
print(round(1/6, 2))
print(round(1/6, 1))
ger utskriften
0.16666666666666666
0.17
0.2
# Exempel - Avrunda variabler med decimaltal med round()
kvot = 1/6
print(kvot)
print(round(kvot, 2))
print(round(kvot, 1))
ger utskriften
0.16666666666666666
0.17
0.2
Datorer lagrar tal i det binära talsystemet och kan alltså inte lagra decimaltal exakt. Det är bra att skriva ut decimaltalet med ett givet antal decimaler.
# Exempel - Avrunda decimaltal
summa = 0.1 + 0.2
print(summa)
test = round(summa, 2)
print(test)
ger utskriften
0.30000000000000004
0.3
1.2 Indata
Funktionen input() används för att ta emot indata från tangentbordet. Den ger alltid tillbaka (returnerar) en sträng.
# Exempel - Använd print med flera argument, dvs flera värden
namn = input('Skriv ditt namn: ')
# Värdena skrivs ut separerade med ett mellanslag
print('Hej', namn) # print har 2 argument
kan ge utskriften
Skriv ditt namn: Birgitta
Hej Birgitta
Här görs omvandlingen från sträng till heltal efter funktionen input() anropats.
# Exempel - Typomvandling till heltal direkt vid inmatning
# Läs in värde
ålder = input('Skriv in din ålder: ')
# Omvandla datatyp från sträng till heltal
ålder = int(ålder)
ålder = ålder + 1
print('Nästa gång fyller du', ålder, 'år')
kan ge utskriften
Skriv in din ålder: 17
Nästa gång fyller du 18 år
Här görs omvandlingen från sträng till heltal direkt på värdet från funktionen input().
# Exempel - Typomvandling till heltal direkt vid inmatning
# Läs in värde och omvandla datatyp
ålder = int(input('Skriv in din ålder: '))
ålder = ålder + 1
print('Nästa gång fyller du', ålder, 'år')
kan ge utskriften
Skriv in din ålder: 17
Nästa gång fyller du 18 år
# Exempel - Typomvandling till decimaltal direkt vid inmatning
längd = float(input('Hur lång är du i m: '))
längd = längd + 0.1
print('Växer du en decimeter till blir du', längd, 'm lång.')
print('Växer du en decimeter till blir du', round(längd, 2), 'm lång.')
kan ge utskriften
Hur lång är du i m: 1.81
Växer du en decimeter till blir du 1.9100000000000001 m lång.
Växer du en decimeter till blir du 1.91 m lång
1.3 Utdata
Funktionen print() används för att skriva ut data till konsolfönstret.
# Exempel - Utskrift med print() med flera argument, dvs flera värden
x = 2
y = 14
print('x =', x)
print('y =', y)
print('x + y =', x + y)
ger utskriften
x = 2
y = 14
x + y = 16
# Exempel - Utskrift med print() med flera argument, dvs flera värden
namn = 'Maria'
text = 'är'
ålder = 12
print(namn, text, ålder)
ger utskriften
Maria är 12
# Exempel - Använd sep
# sep används för att separera utskriften av de olika argumenten.
# Man kan ange att sep ska vara något annat än ett blanktecken.
namn = 'Maria'
text = 'är'
ålder = 12
print(namn, text, ålder)
print(namn, text, ålder, sep= '-')
print(namn, text, ålder, sep= '\n') # \n betyder ny rad
print(namn, text, ålder, sep= '\t') # \t betyder ett tab-tecken
ger utskriften
Maria är 12
Maria-är-12
Maria
är
12
Maria är 12
# Exempel - Använd end för att avsluta utskriften med något annat än en radbrytning
namn = 'Maria'
text = 'är'
ålder = 12
print(namn, text, ålder, end= '.') # Avslutar med punkt
ger utskriften
Maria är 12.
# Exempel - Använd både sep och end
namn = 'Maria'
text = 'är'
ålder = 12
# Separerar med bindestreck och avslutar med punkt och ny rad
print(namn, text, ålder, sep= '-', end= '.\n')
print('Ny rad')
ger utskriften
Maria-är-12.
Ny rad
M.h.a Unicode symboler går det att få upphöjda och nedsänkta siffror.
# Exempel - Med unicode
print('x\u00b2')
print('y\u00b3')
print('x\u2081')
print('y\u2082')
ger utskriften
x²
y³
x₁
y₂
1.4 Film om indata & utdata (8:01)
Övningar expand_more
- Vad blir utskriften?
x = round(3.6649, 1) print(x) - Vad blir utskriften?
print(round(3.6649, 2)) print(round(3.6649, 3)) - Hur kommer utskriften från nedanstående program att visas?
Skriv programmet så att utskriften hamnar på en rad. Använd entxt = 'Om du kör med hastigheten 30 km/h i 2.5 timmar, så hinner du' hastighet = 30 * 2.5 enhet = 'km' print(txt) print(hastighet) print(enhet)print-funktion. - Skriv ett program där användaren skriver in ett decimaltal som sedan ska avrundas till en decimal och skrivas ut.
-
Med formeln s=v·t kan sträckan (s) beräknas om man har hastigheten (v) och tiden (t).
Skriv ett program som beräknar sträckan om man kör 120 km/h i 90 minuter. - Programmet försöker omvandla liter till milliliter, men varför blir det inte som man tänkt sig?
antal_liter = input("Ange antal liter: ") milli_liter = antal_liter * 1000 print('Det motsvarar', milli_liter, 'milliliter (ml).') - Skriv ett program där användaren skriver in två heltal och sedan ska summan beräknas och skrivas ut.
- Skriv ett program som frågar vad man heter och var man bor. Sedan skriver programmet ut t.ex. Hej, Pelle från Östersund.
- Ändra i koden så att två flyttal (decimaltal) adderas.
Testkör programmet och skriv in två flyttal. Tänk på att använda decimalpunkt istället för decimalkomma.# Addera två heltal. # Läs in som textsträng och omvandla till heltal a = int(input('a = ')) b = int(input('b = ')) # Beräkna summan sum = a + b # Skriv ut summan print('a + b = ', sum)
Testa att skriva in flyttal med två eller fler decimaler. Avrunda sedan summan till en decimal. - Skriv ett program där användaren skriver in två tal och sedan ska medelvärdet av talen beräknas och skrivas ut.
-
Skriv ett program som tar emot en temperatur i grader Celsius som indata och sedan visar temperaturen i Fahrenheit.
Formeln för konvertering är: F = 1.8C + 32.0 - *Skriv ett program som tar emot ett antal minuter som indata och sedan visar hur många timmar och minuter denna tid motsvarar.
-
*Gör ett program som simulerar en bankomat. Låt användaren skriva in ett uttag (jämnt hundratal).
Visa sedan hur många hundra-, tvåhundra- och femhundra-lappar bankomaten ska mata ut.
Begrepp expand_more
Indata: Information som ges till datorn med t.ex. tangentbord, mus eller mikrofon.
Utdata: Information som visas från datorn t.ex. till en skärm, högtalare eller skrivare.
input: Funktion som används i koden för att ta emot indata från tangentbordet.
print: Funktion som används i koden för att skriva ut data till konsolfönstret.
Variabel: Har ett namn, värde och datatyp.
Tilldelning: En variabel ges ett värde.
Deklarera: Skapa en variabel med en tilldelning.
Funktion: Färdig kod i Python som kan anropas för att utföra vissa instruktioner.
Sats: En instruktion som utför något och är normalt en rad med kod.
Datatyp: En variabel kan innehålla värden av olika sort, t.ex. heltal, decimaltal, textsträng eller bool.
Inlämningsuppgift expand_more
input & print
Skriv ett program som frågar användaren vad hen heter, hens ålder och favorit-dataspel (använd input).
Ditt program ska ställa tre frågor och sedan ska utskriften bli exakt som exempelkörningen, naturligtvis
beror namn, ålder och dataspel på vad användaren svarar.
Exempelkörning:
Vad heter du? Kalle
Hur gammal är du? 17
Vad är ditt favorit-dataspel? Fortnite
Hej, Kalle
Ditt favorit-dataspel är Fortnite
Nästa gång fyller du 18 år
Kom ihåg! Använd beskrivande variabelnamn och kommentera koden.
Frivillig utmaning
Utskriften ska bli exakt som nedan. Observera att det ska var en tom rad före utskrifterna börjar. Kontrollera att alla punkter och mellanslag (space) är på rätt plats.
Exempelkörning:
Vad heter du? Maria
Hur gammal är du? 17
Vad är ditt favorit-dataspel? Fortnite
Hej, Maria. Ditt favorit-dataspel är Fortnite.
Nästa gång fyller du 18 år.
