TAI print - Mika Himself

Tekninen viestintä
12.02.2013
Ohjelmointia teknisille viestijöille
Tekninen viestintä
12.02.2013
Kertaus
Kertaus
print()-aliohjelmalla voit tulostaa tekstiä. Tulostettava teksti annetaan
aliohjelman parametrina: print("Kaunis ilma tänään")
Tekstiin voi sijoittaa ulkopuolisia elementtejä %s- (merkkijonot), %d(kokonaisluvut) ja %f- (murtoluvut) operaattoreiden avulla. Esim:
print("Tässä on %s lause, johon sijoitetaan %s" % ("pitkä","sana"))
Koodinvaihtomerkillä voi kiertää erikoismerkkejä tai muokata tulostetta.
[\"] ohittaa lainausmerkin, [\t] lisää sarkaimen ja [\n] rivinvaihdon.
Muuttujaan voi tallentaa viittauksen tiettyyn arvoon. Tähän arvoon voi
myöhemmin viitata kätevästi muuttujan nimellä.
Tekninen viestintä
12.02.2013
Syötteet
Syötteet – Sananen käyttäjältä
o Käyttäjää voidaan pyytää syöttämään tietoja
input()-aliohjelman avulla
o input()-aliohjelmalle annetaan parametrina
teksti, joka käyttäjälle halutaan näyttää
input("Syötä käyttäjänimi: ")
o Tulostettuuan tekstin, aliohjelma odottaa että
käyttäjä syöttää tekstiä
Syötteet – Sananen käyttäjältä
o Kun käyttäjä painaa enteriä, aliohjelma
palauttaa käyttäjän syöttämän tekstin
o Jotta käyttäjän syöttämä teksti saataisiin
talteen, täytyy se tallentaa muuttujaan:
username = input("Syötä käyttäjänimi: ")
Wow, kuka
olette?
Pitkäkissa.
Tallennathan
tämän tiedon?
”Hra. Input”
En, vaan välitän
tiedon eteenpäin,
neiti Pitkäkissa!
”Käyttäjä”
”Hra.
muuttuja”
kthanksbye, minä pidän
tästä tiedosta hyvää
huolta
Syötteet – Sananen käyttäjältä
o Käyttäjäpalautteen perusteella ohjelmia voi
personoida:
username = input("Syötä käyttäjänimi: ")
print ("Tervetuloa palveluun " + username)
TAI
print ("Tervetuloa palveluun %s" % username)
o Tai suorittaa tehtäviä:
luku = input("Syötä luku, jonka haluat kertoa kymmenellä: ")
Syötteiden tyyppi
o Input-aliohjelmalla tallennetuista muuttujista tulee
automaattisesti merkkijonoja:
print ("Minä olen Calculon - laskukone")
luku = input("Syöta luku, jonka haluat kertoa viidellä: ")
tulo = luku * 5
print ("Tulos on " + tulo)
Tyypin muuntaminen
o Jos muuttujien tyyppiä haluaa muuttaa, täytyy
muuttujalle tehdä tyyppimuunnos
o Tyyppimuunnoksia varten Pythonissa on omat
aliohjelmansa, esim. str(), int() ja float()
o Aliohjelmalle annetaan parametrina arvo joka
halutaan muuntaa, ja aliohjelma palauttaa
muunnetun arvon
Syötteiden tyyppi
o input()-aliohjelman tavoin, myös
muunnosaliohjelmien palauttama tieto täytyy
tallentaa muuttujaan, jotta sitä voi käsitellä
nimi = input("Syötä nimesi: ")
luku = input("Syötä ikäsi: ")
luku = int(luku)
ikaPaivina = luku * 365
print("Moi", nimi)
print("Olet " + str(ikaPaivina) + " päivää vanha")
TAI
print("Olet", ikaPaivina, "päivää vanha")
Pro Tip! Jos
muuntelu tympii, voi
tulosteissa arvot
yhdistää pilkuilla.
Python hoitaa tällöin
tarvittavat
muunnokset ja lisää
arvojen väliin
välilyönnit!
Syötteiden tyyppi
o Syötteen pyytämisen ja muunnoksen voi myös
yhdistää:
luku = int(input("Syötä ikäsi: "))
o Python suorittaa ensin input()-aliohjelman,
palauttaa sen tuloksen int()-aliohjelmaan.
int()-aliohjelman palauttama arvo tallentuu
tämän jälkeen luku-muuttujaan
”19”
Hei taas,
tarvitsisin
numeron!
”Hra. Input”
Mein Gott! Tuohan
on merkkijono ja
täytyy muuntaa!
”Käyttäjä”
Pelko pois, minä
kyllä muunnan
syötteet
Ja tuttuun tapaan,
minä tallennan arvon
Neiti int()
”Hra. muuttuja”
Harjoitus
o Tee tehtävä 1
Vastaukset
a)
b)
c)
d)
nimi = input("Ilmoita nimesi: ")
print ("Hauska tavata,", nimi)
nimi = input("Ilmoita nimesi: ")
ika = input("Ilmoita ikäsi: ")
print ("Hauska tavata,", nimi + ". Olet %s-vuotias" % ika)
paino = int(input("Paljonko painat: "))
painoKuussa = paino * 0.17
print ("Painosi kuun pinnalla olisi %0.1f kiloa" % painoKuussa)
ika = int(input("Kuinka vanha olet: "))
ikaSekuntia = ika * 365 * 24 * 60 * 60
print ("Olet %d sekunnin ikäinen" % ikaSekuntia)
Tekninen viestintä
12.02.2013
Ehtolauseet
if &
else
o Jotta ohjelma voisi
reagoida paremmin esim.
käyttäjän syötteisiin,
ohjelmiin voidaan sijoittaa
ehtorakenteilla
o Yksi yleisimmistä
ehtorakenteista on if-lause
o if-lause tarkastaa onko
lauseen ehto tosi vai
epätosi
Jossittelua
o Jos lauseeseen sijoitettu ehto on tosi, ohjelma
siirtyy suorittamaan ehdollistettua
ohjelmahaaraa.
o Jos ehto on epätosi, ohjelma voi:
o palata suorittamaan ohjelman päähaaraa
o ehtorakenteeseen voidaan lisätä ohjelmahaara
joka kertoo mitä tehdään jos ehto on epätosi
Tarkista, onko
jääkaapissa ruokaa!
Jos ei, snägärille!
Tämän jälkeen voit
jatkaa muiden
askareiden parissa!
Jos on, syö!
Jossittelua
o Ehtojen arvoja verrataan
vertailuoperaattoreilla:
==
!=
>
<
>=
<=
yhtä kuin
erisuuri kuin
suurempi kuin
pienempi kuin
suurempi tai yhtä suuri kuin
pienempi tai yhtä suuri kuin
o Vertailun tulos on aina tosi tai epätosi
Jossittelua
21 < 34
myAge >= ageLimit
myName == "Mika"
userGuess != 42
price <= lowerLimit
Kirjoitusasu
if
arvo1
>
Tee jotakin
Tee jotakin muuta
else
:
Tee jotakin
Tee jotakin muuta
arvo2
:
Kirjoitusasu
age = int(input("How old are you?"))
if age >= 18:
print ("Welcome to the tavern!")
else:
print ("Ha! No beer for you!")
Jos käyttäjän on yli 18-vuotias,
toivota käyttäjä tervetulleeksi.
Muutoin, käännytä
käyttäjä ovella
Ohjelmalohkot ja sisennykset
o Pythonissa ohjelmalohkot on merkittävä johdonmukaisesti sarkaimella tai
välilyönneillä. Jos lohkoja päätetään sisentää esim. sarkaimella, tulee
valittua mallia noudattaa koko ohjelmassa.
myName = ”Zaphod”
mOfLife= 40
if mOfLife > 22:
mOfLife += 2
if myName == “Zaphod”:
print (“Hi %s!” % myName)
print (“The meaning of life is %d” % mOfLife)
else:
print (“Hello, %s!” % myName)
print (“We don’t know the meaning of life”)
print (“End communication”)
Ohjelmalohkot ja sisennykset
o Jos sisennyksessä on poikkeuksia, Pythontulkki keskeyttää ohjelman suorittamisen:
myName = ”Zaphod”
mOfLife= 40
if mOfLife > 22:
mOfLife += 2
if myName == “Zaphod”:
print (“Hi %s!” % myName)
print (“The meaning of life is %d” % mOfLife)
else:
print (“Hello, %s!” % myName)
Harjoitus
o Tee tehtävä 2
Vastaukset
a)
b)
c)
nimi = input("Kerro nimesi: ")
if nimi == "Dweezil":
print ("Onpa mainio nimi!")
nimi = input("Kerro nimesi: ")
if nimi == "Mika":
print ("Onpa mainio nimi!")
else:
print ("Oletko harkinnut nimesi vaihtamista parempaan?")
arvaus = input("Arvaa mitä lukua ajattelen: ")
luku = "7"
if arvaus == luku:
print ("Arvasit oikein!")
else:
print ("Väärin meni. Parempi onni ensi kerralla")
Vastaukset
d)
tunnus = input("Tämä on huippusalainen tietojärjestelmä. Syötä tunnussana: ")
tunnussana = "TrustNo1"
if tunnus == tunnussana:
print("Pääsit kirjautumaan järjestelmään!")
Joko, tai, tai sitten
o Ohjelmiin saadaan lisää tarkasteltavia
vaihtoehtoja käyttämällä elif-lausetta:
if age >= 18:
print ("Welcome to the tavern!")
elif age == 16:
print ("Come again in two years")
elif age == 17:
print ("One more year!")
else:
print ("No beer for you, Sonny Jim!")
o elif-lauseita voi lisätä ehtorakenteeseen niin
paljon kuin tehtävä vaatii
Ehtojen tarkentaminen
o Ehtoja voi tarkentaa yhdistelemällä useita ehtoja
ehtolauseeseen loogisten operaattoreiden and ja or
avulla:
if age >= 18 and age < 35:
print ("Welcome to the tavern!")
elif age > 35:
print ("Shouldn't you be at home with your family?")
elif age == 16 or age == 17:
print("No beer for you!")
else:
print ("Shouldn't you be in bed at this hour?")
Ehtojen tarkentaminen
o Jos ehdossa käytetään and-operaattoria,
molempien ehtojen tulee täyttyä, jotta
sisempi ohjelmalohko suoritetaan
if age >= 18 and age < 35:
o or-operaattoria käytettäessä vain toisen
ehdon tarvitsee täyttyä, jotta sisempi
ohjelmalohko suoritetaan
if age >= 18 or bribe > 50:
Ehtojen tarkentaminen
o and- ja or-avainsanoja voi myös yhdistää samaan
ehtolauseeseen:
age = int(input("Kuinka vanha olet? ")
name = input("Kerro nimesi: ")
if (age >= 18 and age < 35) or (name == "Jasso Laamanen”):
print ("Tervetuloa!")
elif age > 35 and age < 70:
print ("Eikö sinun pitäisi olla kotosalla?")
elif age == 16 or age == 17:
Jos asiakkaan ikä on 18-34 tai
nimi on Jasso Laamanen,
toivotetaan asiakas tervetulleeksi
Yli 35- ja alle 70-vuotiaat
käännytetään perheensä luo
16- ja 17-vuotiaille ei anniskella
print("Sinulle ei vielä tarjoilla!")
else:
print ("Eikö sinun pitäisi olla nukkumassa?")
Muiden pitäisi olla jo
nukkumassa
Merkkijonot ehdoissa
o Jos ehtona käytetään merkkijonoa, vertailukohtana ei aina
tarvitse käyttää kokonaista merkkijonoa
o Merkkijonon sisältämiä merkkejä voi tarkastella inoperaattorin avulla:
name = "Jasso Laamanen"
if "Jasso" in name:
print ("Kato, Laamanen!")
o Jos tiettyä merkkijonoa ei toivota vastaukseksi, voidaan inoperaattorin eteen liittää not-operaattori:
if "Jasso" not in name:
Merkkijonot ehdoissa
o Merkkijonoja vertailtaessa voi joskus olla tarpeen sallia sekä
pienellä että isolla alkukirjaimella kirjoitettu versio sanasta
o Pythonin upper() ja lower() –aliohjelmien avulla voi
kirjainkoon kiertää merkkijonoja vertailtaessa
inputName = input("Kerro nimesi: ")
userName = "ESKO NOPPA"
if inputName.upper() == userName:
print ("Hei, oikea nimi!")
o Aliohjelmat muuntavat muuttujan arvon sitä vertailtaessa,
joten kirjainkoolla ei ole merkitystä. Jos muunnetun arvon
haluaa talteen, voi sen tallentaa muuttujaan
Ehtojen tarkentaminen
o Myös ehtojen sisään voi
sijoittaa ehtoja:
name = input("Enter name: ")
userLevel = "SuperUser"
if name == "Admin":
if userLevel == "Admin":
print ("Welcome, Admin")
elif userLevel == "Hacker":
print ("Welcome, Kevin")
elif userLevel == "SuperUser":
print ("What is thy bidding?")
else:
print ("Get outta here!")
Harjoitus
o Tee tehtävä 3
Vastaukset
a)
b)
vast = ”Bujumbura"
arv = input ("Mikä on Burundin pääkaupunki? ")
if arv.lower() == vast.lower():
print("Oikein!")
else:
print("Väärin meni")
luku = int(input("Syötä luku: "))
if luku <= 500:
print("Luku sijoittuu välille 0-500")
elif luku > 500 and luku <= 1000:
print("Luku sijoittuu välille 501-1000")
else:
print("Luku on suurempi kuin 1000")
c)
guess = 42
userGuess = int(input("Arvaa mitä numeroa ajattelen"))
if userGuess == guess:
print ("Onneksi olkoon! Arvasit oikein")
elif userGuess > guess:
print ("Väärin, ajattelin pienempää numeroa")
else:
print("Väärin, ajattelin suurempaa numeroa")
d)
user1 = "JohnnyUser"
pass1 = "123456"
user2 = "JennyUser"
pass2 = "MyPassword"
…
username = input("Käyttäjätunnus: ")
password = input("Salasana: ")
if username == user1 and password == pass1:
print ("Tervetuloa järjestelmään")
elif username == user2 and password == pass2:
print ("Tervetuloa järjestelmään")
…
else:
print ("Väärä salasana")