linux: komennoista linux linux

Samankaltaiset tiedostot
linux: komennoista linux linux

linux: Ympäristömuuttujat

linux: Ympäristömuuttujat

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

linux: Prosessit kill PID lopettaa prosessin PID, jos siihen on oikeudet Ctrl + c lopettaa aktiivisen prosessin L7: linux

Tähtitieteen käytännön menetelmiä: I

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 2: Linux

L2: linux linux: Komentotulkki

Luento 4. Timo Savola. 21. huhtikuuta 2006

Tieteellinen laskenta I (Scientific Computing I)

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Komentotulkki. Kysymyksiä

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön

Kieliteknologian ATK-ympäristö Toinen luento

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Johdatus Ohjelmointiin

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

linux: koneelta toiselle

14. Hyvä ohjelmointitapa 14.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

13. Hyvä ohjelmointitapa (osa 1) 13.1

Harjoitus 6 (viikko 42)

Julkaiseminen verkossa

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Luento 3. Timo Savola. 7. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

linux: arkistointi jjj

Korpusten käsittely clt131, P Luento 4

Ohjelmoinnin perusteet Y Python

Metropolia Ammattikorkeakoulu

Ohjelmoinnin perusteet Y Python

Hakemistojen sisällöt säilötään linkitetyille listalle.

Tieteellinen laskenta I (Scientific Computing I)

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmoinnin peruskurssi Y1

Kieliteknologian ATK-ympäristö Kolmas luento

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Seuraavassa on esitetty seuraavien laskutoimitusten suoritukset eri laskinmalleilla

Valitse ruudun yläosassa oleva painike Download Scilab.

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Ohjelmoinnin perusteet Y Python

Pienimmän Neliösumman Sovitus (PNS)

Kieliteknologian ATK-ympäristö Viides luento

Fx-CP400 -laskimella voit ratkaista yhtälöitä ja yhtälöryhmiä eri tavoin.

Kieliteknologian ATK-ympäristö Viides luento

Ohjelmoinnin peruskurssi Y1

Kieliteknologian ATK-ympäristö Neljäs luento

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Harjoitus 1 -- Ratkaisut

Matriiseista. Emmi Koljonen

Unix. Markus Norrena

Harjoitus 10: Mathematica

ATK tähtitieteessä. Osa 2 - IDL perusominaisuudet. 12. syyskuuta 2014

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

Sisällys. Johdatus Linux/Unixiin: Osa 2. Prosessin tilat. Prosessien hallinta. Prosessien monitorointi

Ohjelmoinnin perusteet Y Python

linux linux: rm, cp, mv ls Return listaa työhakemiston sisällön

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Tutoriaaliläsnäoloista

Vektorit. Vektorin luominen Vektorin tuominen näyttöön Vektorin koon ja alkioiden muokkaaminen Vektorin poistaminen...

1. HARJOITUS harjoitus3_korjaus.doc

Ohjelmoinnin perusteet Y Python

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Harjoitus 1 -- Ratkaisut

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Harjoitus 6 (viikko 42)

Ohjelmoinnin perusteet Y Python

Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op)

KAAVAT. Sisällysluettelo

Muuttujien määrittely

Java-kielen perusteet

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

1.1 Tekstinprosessointiohjelmien yleinen toimintatapa (1)

CLASSIC WINTIME - TOIMITTAJAN ENNAKKOPERINTÄREKISTERIPÄIVÄ

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

8. Näppäimistöltä lukeminen 8.1

Transkriptio:

L4: linux linux: komennoista linux Komentojen käyttö komento -opt1 -opt2 argumentti Esimerkiksi ls -s *.dat tulostaa työtiedoston.dat loppuiset tiedostot ja niiden koon Esimerkiksi ls -l *.dat tulostaa samojen tiedostojen, koon, viimeisen version ajan, yms Molemmat yhtä aikaa ls -l -s *.dat on sama kuin ls -ls *.dat on sama kuin ls -sl *.dat whatis arg lyhyt arg kuvaus man arg näyttää arg manuaalisivut info arg näyttää arg infosivut arg --help komennon opaste Kokeile whatis cp, man cp, info cp, cp --help (Poistuminen tarvittaessa: q) linux Luodaan kaksi tyhjää tiedostoa touch aaa ja touch bbb Annetaan komento cp -i aaa bbb tulostuu kysymys cp: overwrite bbb? johon voi vastata y tai n Sarkain täydentää komentoja Esimerkiksi ho tuottaa host täydentää myös tiedostojen tai hakemistojen nimiä Annetut komennot tallentuvat komentopinoon, jota voi selata nuolinäppäimillä ja Selattujen komentojen sisällä voi liikkua nuolinäppäimillä ja, sekä samalla edioida uusia merkkejä

L4: linux linux: komennoista linux Esimerkiksi history 10 tulostaa viimeiset 10 annettua komentoa Komennon ulosanti voidaan ohjata tiedostoon tai toiseen komentoon Esimerkki komennosta tiedostoon: ls > aaa tulostaa työhakemiston sisällön tiedostoon aaa Näin luodun aaa tiedoston voi tulostaa komennolla cat aaa Esimerkki komennosta komentoon: grep ab username/* sort - etsii hakemistosta username/ tiedostot *, joissa esiintyy merkkirivi ab Komento sort - tulostaa nämä tiedostot aakkosjärjestyksessä Useita komentoja voi siis putkittaa (engl. pipe) merkin avulla linux Komennoilla on oletuskäyttäytyminen, jota voi muuttaa ja luoda eri muunnelmia cp file1 file2 kopioi tiedoston file1 sisällön tiedostoon file2, cp oletuskäyttäytyminen on, että file2:n päälle kirjoitetaan mitään kysymättä Komento cp -i file1 file2 kysyy cp: overwrite file2 alias cp= cp -i määrittelee uuden komennon cp, joka tekee kuten cp -i Editoidaan tiedosto emacs.myalias alias c= clear alias cp= cp -i alias rm= rm -i Ajetaan komennolla source.myalias Tämän jälkeen c tyhjentää näytön, sekä cp tai rm eivät kopioi tai tuhoa kysymättä ls -a listaa työtiedoston sisällön, mukaan lukien merkillä. alkavat tiedostot

L4: linux linux: Alias linux: Alias Pitkät usein käytetyt komennot alias nimi= pitkä komento kannattaa lyhentää Esimerkki 1: alias lyhennys alias Pr= lpr -PHP-Laserjet-1200 mahdollistaa tiedoston file printtauksen jonoon HP-Laserjet-1200 komennolla Pr file Muuten pitää jokaista tiedostoa * printatessa kirjoittaa lpr -PHP-Laserjet-1200 * Esimerkki 2: valinnalla alias = 3 varmistetaan, että komennolla käytetään uusinta versiota 3 Toimivaa alias komentoa ei kannata keksiä/määritellä/etsiä uudestaan linux: alias Valitut alias komennot kannattaa tallentaa tiedostoon /home/username/.bashrc Tämä alustustiedosto luetaan aina istunnon alkaessa tai uuden linux komentotulkin käynnistyessä Tapa 1: editoidaan tiedostoon /home/username/.bashrc rivit alias c= clear alias cp= cp -i alias rm= rm -i alias = 3 Tapa 2: editoidaan samat 4 riviä tiedostoon /home/username/.myalias ja 1 rivi source.myalias tiedostoon /home/username/.bashrc Tapa 2 parempi: Miksi? Ensin cp.bashrc.bashrcold Sitten emacs.bashrc & Miksi?

L4: latex L A T E X: Matemaattiset kaavat L A T E X:Kaavat Matemaattiset kaavat rajataan merkillä $ Tekstin sisään (in line math) tarkoitetut kaavat rajataan kummaltakin puolelta $:llä Esim: tekstisyöte Mitä on $a_1 \sin{y},$ jos $a_1=7$ ja $y=89$. tuottaa Mitä on a 1 sin y, jos a 1 = 7 ja y = 89 Symbolit kursiivia: kts a 1, y yllä Luvut ja funktiot ei kursiivia: kts 7, sin yllä Kursiivin voi estää (esim: luonnon vakiot) Esim: valon nopeus $\mathrm{c}$ tuottaa valon nopeus c, mutta valon nopeus $c$ tuottaisi valon nopeus c L A T E X: Kaavat Tekstistä erottumaan (display math) tarkoitetut kaavat rajataan $$:llä Esim: tekstisyöte Mitä on $$a_1 \sin{y},$$ jos $a_1=7$ ja $y=89$. tuottaa Mitä on a 1 sin y, jos a 1 = 7 ja y = 89. Merkki _ tuottaa alaviitteen Esimi: $a_{b+c}$ tuottaa a b+c, missä { ja } rajaavat alaviitteen Esim: $a^{b+c}$ tuottaa yläviitteen a b+c Esim: $a^{b+c}_{d+e}$ tuottaa molemmat a b+c d+e

L4: latex L A T E X: Matemaattiset kaavat L A T E X: Kaavat (kuva:@www.spreadshirt.co.uk) emacs on LAT E X ystävällinen Kursori pomppii editoidessa ${ { \sum_{i=1}^{n+1}\cos{i\pi\alpha} } \over { \sum_{i=1}^{n+1}\sin{i\pi\alpha} } }$ n+1 joka tuottaa i=1 cos iπα sin iπα n+1 i=1 Kreikkalaisille kirjaimille omat komennot: esim \alpha ja \pi yllä Matemaattisille funktiolle omat komennot: esim \cos ja \cos yllä Matemaattisille merkinnöille omat komennot: esim \sum ja \over yllä Mitään ei tarvitse/kannata opetella ulkoa, koska löytyvät esimerkiksi täältä www L A T E X: Kaavat Lähes minkä tahansa symbolin komento löytyy täältä www

L4: latex L A T E X: Matemaattiset kaavat L A T E X: Kaavat $$ rajatuista kaavoista puuttuu numerointi Viittaaminen tekstin sisällä vaikeaa LAT E X tekstisyöte Tähän kaavaan \begin{equation} E = m \mathrm{c}^2 \label{ejuttu} \end{equation} voi viitata (Kaava \ref{ejuttu}) tuottaa Tähän kaavaan voi viitata (Kaava 1) E = mc 2 (1) Komento \ref{ejuttu} viittaa tunnisteeseen \label{ejuttu} Kaavan numero pysyy oikeana, vaikka lisätään uusia numeroituja kaavoja L A T E X: Kaavat LAT E X tekstisyöte \begin{eqnarray} a_x & = & \int_a^b x dx \\ \sin{x}& = & a_x \nonumber \\ d & = & x \end{eqnarray} tuottaa b a x = xdx (2) a sin x = a x d = x (3) Sarake vaihtuu = &, Rivi vaihtuu = \\ Ei numeroa komennolla \nonumber latex tiedosto ajettava kahdesti Numerointi kunnossa Ei tulostu kaavan ja viitenumeron kohdalla??

L4: : paljon erilaisia valmiita moduleja, joita ladataan tarpeen mukaan Matemaattiset funktiot: Numpy www importoidaan komennolla import numpy Importoinnin jälkeen esimerkiksi tämän modulin sisällön voi aina tarkistaa komennolla dir(numpy) Nimeä voi muuttaa esimerkiksi import numpy as np a=np.arange(3) print(a) tulostaa [0 1 2] Tieteellinen laskenta: Scipy www importointi import scipy Pythonista on olemassa interaktiivinen versio i www Kokeile linux komentotulkissa i -pylab In [1] ilmestyy a=numpy.ones(3) ; print(a) tulostaa [ 1. 1. 1.] Anna sen jälkeen komento a. ja i kertoo kaiken, mitä voit tehdä muuttujalle a, jos aloitat muodolla a. i:ssa voi vaikkapa kokeilla erilaisia komentoja ennen kuin kirjoittaa ne editoimansa ohjelman sisään Kokeile linux komentoa pwd. Se toimii i:ssa, mutta ei tavallisessa :ssa Tulosten visualisointi: Pylab www importointi import pylab

L4: Numeeriset muuttujatyypit pitävät sisällään lukuarvoja. Esimerkkejä int = kokonaisluku esim a=4 float = reaaliluku esim a=3.45 complex = kompleksiluku esim a=complex(3,4) tai a=3.+4j Tyhjän muuttujan luominen: a=int(), a=float(), a=complex() Kokeillaan :ssa a=1 ; b=1 ; c=a+b print(type(a),type(b),type(c)) tyyppi ei muutu Kokeillaan :ssa a=1 ; b=2.2 ; c=a+b print(type(a),type(b),type(c)) tyyppi muuttuu tarkkuuden mukaan Muuttujatyyppejä ei tarvitse opetella ulkoa Muuttujan tunnuksista Tunnus toimii osoittimena muuttujaan eli muuttujan nimenä Yhteen muuttujaan voi osoittaa monta tunnusta Tunnuksen voi kesken ohjelman vaihtaa osoittamaan johonkin toiseen muuttujaan Toisin kuin monissa kielessä, :ssa tunnus ei ole sidottu mihinkään tiettyyn muuttujatyyppiin Kopioidaan kotisivulta Tunnus.py Tämä ohjelma on esimerkki siitä, miksi ohjelmien tunnukset pitää valita huolellisesti

L4: # Kommenttirivi : Tama on ohjelmani Tunnus. py import os ; os. system ( clear ) # Tyhjennetaan naytto a = [ 1, 2 ] ; b = a # Kaksi kaskya samalla r i v i l l a p r i n t ( Vaihe I.................................. ) # M e r k i l l a " \ " l a a d i t a a n kahden r i v i n p i t u i n e n kasky p r i n t ( a [ 0 ] =, a [ 0 ],, a [ 1 ] =, a [ 1 ], \, b [ 0 ] =, b [ 0 ],, b [ 1 ] =, b [ 1 ] ) a [ 1 ] = 0 # Muutetaan a : n toisen alkion a [ 1 ] arvo p r i n t ( Vaihe I I : b [ 1 ] muuttunut! ) p r i n t ( a [ 0 ] =, a [ 0 ],, a [ 1 ] =, a [ 1 ], \, b [ 0 ] =, b [ 0 ],, b [ 1 ] =, b [ 1 ] ) # Ratkaisu 1 : tuple tyyppista muuttujaa d ei voi muuttaa c = [ 1, 2 ] ; d= t u p l e ( c ) p r i n t ( Vaihe I I I................................ ) p r i n t ( c [ 0 ] =, c [ 0 ],, c [ 1 ] =, c [ 1 ], \, d [ 0 ] =, d [ 0 ],, d [ 1 ] =, d [ 1 ] ) c [ 1 ] =0 # Muutetaan c : n toisen alkion c [ 1 ] arvo print ( Vaihe IV : d [1] e i muuttunut! ) p r i n t ( c [ 0 ] =, c [ 0 ],, c [ 1 ] =, c [ 1 ], \, d [ 0 ] =, d [ 0 ],, d [ 1 ] =, d [ 1 ] ) # Ratkaisu 2 : Kopioidaan e : n kaikki alkiot muuttujaan f e = [ 1, 2 ] ; f =e [ : ] p r i n t ( Vaihe V.................................. ) p r i n t ( e [ 0 ] =, e [ 0 ],, e [ 1 ] =, e [ 1 ], \, f [ 0 ] =, f [ 0 ],, f [ 1 ] =, f [ 1 ] ) e [ 1 ] = 0 # Muutetaan e : n toisen alkion e [ 1 ] arvo print ( Vaihe VI : f [1] e i muuttunut! ) p r i n t ( e [ 0 ] =, e [ 0 ],, e [ 1 ] =, e [ 1 ], \, f [ 0 ] =, f [ 0 ],, f [ 1 ] =, f [ 1 ] ) 3 Tunnus.py tulostaa Vaihe I... a[0]= 1,a[1]= 2,b[0]= 1,b[1]= 2 Vaihe II: b[1] muuttunut! a[0]= 1,a[1]= 0,b[0]= 1,b[1]= 0 Vaihe III... c[0]= 1,c[1]= 2,d[0]= 1,d[1]= 2 Vaihe IV: d[1] ei muuttunut! c[0]= 1,c[1]= 0,d[0]= 1,d[1]= 2 Vaihe V... e[0]= 1,e[1]= 2,f[0]= 1,f[1]= 2 Vaihe VI: f[1] ei muuttunut! e[0]= 1,e[1]= 0,f[0]= 1,f[1]= 2 Tunnukset a ja b viittasivat samaan muuttujaan. a:n alkion a[1]=1.0 arvon ja tyypin muutos muutti b[1]:n arvon ja tyypin Muuttujaan d kopioitiin c:n alkioiden arvot. d=tuple(c) teki listan, jonka alkioita ei voi muuttaa. Siksi c[1]:n muutos ei muuta alkiota d[1]= cd Muuttujaan f kopioitiin e:n kaikki alkiot [:] e[1]:n muutos ei muuta alkiota f[1]= ef

L4: Kommentit (kuva:@www.brainstuck.com) Kaikki merkin # jälkeen tuleva lasketaan kommentiksi Kommentit ovat tekstiä jonka jättää huomiotta Kommentit auttavat muita ymmärtämään koodin toimintaa Käytännössä vähemmän käytetyt komennot unohtuvat Komennot voi tarkistaa koodin kommenteista Kommentit vähentävät tulevaa työtä. Ei tarvitse keksiä pyörää uudestaan Malliohjelmissa on pyritty selkeään kommentoitiin Mikäli edes ohjelma/komento löytyy? grep a=1 /home/username/*/*.py etsii ohjelmat *.py joissa a=1 komento

L4: : Ohjauskomento if (kuva:@www.programiz.com) Sisennetyt lohkot erottavat ohjauskomennot muusta koodista. Sisennys on 4 tyhjää merkkiä Aloittava rivi päättyy merkkiin : emacs sisentää automaattisesti if esimerkki: Ifmalli1.py if, elif ja else esimerkki: Ifmalli2.py

L4: # K o m e n t t i r i v i : Tama on ohjelmani I f m a l l i 1. py import os ; os. system ( clear ) # Tyhjennetaan naytto a = 2 ; b = 1 ; c = 2 ; d=1 # 1. kombinaatio #a = 2 ; b = 1 ; c = 1 ; d=2 # 2. kombinaatio #a = 1 ; b = 2 ; c = 2 ; d=1 # 3. kombinaatio #a = 1 ; b = 2 ; c = 1 ; d=2 # 4. kombinaatio p r i n t ( a=,a, b=,b, c=, c, d=, d ) # Tulostetaan a, b, c, d p r i n t ( Kaydaan aina r i v i l l a L8 ) # # Ohjausrakenteen a l o i t u s r i v i t p a a t t y v a t merkkiin " : " # Muut ohjausrakenteen r i v i t s i s e n n e t t y i f ( a > b ) : # 1. ohjausrakenne alkaa p r i n t ( Koska a>b, kaydaan r i v i l l a L12 ) p r i n t ( T a r k i s t u s : a=,a, b=, b ) i f ( c > d ) : # 2. ohjausrakenne alkaa p r i n t ( Koska a>b j a c>d kaydaan r i v i l l a L15 ) p r i n t ( T a r k i s t u s : a=,a, b=,b, c=, c, d=, d ) p r i n t ( Koska a>b kaydaan r i v i l l a L17 ) p r i n t ( T a r k i s t u s : a=,a, b=, b ) Kaksi merkkiin : päättyvää IF ohjausrakennetta Kaksi sisennystä: 4 tai 8 tyhjä Eri kombinaatiolla printtaa eri riveillä Vain 1. kombinaatiolla tekee jokaisen printin 3. ja 4. kombinaatiolla ei printtaa mitään rivin L8 jälkeen

L4: Onko satunnaisesti valittu luku 0 x < 1 välin [0, 1) alussa keskellä vai lopussa? # K o m e n t t i r i v i : Tama on ohjelmani I f m a l l i 2. py import os ; os. system ( c l e a r ) # Tyhjennetaan n a y t t o import numpy as np # numpy moduli import random as ra # random moduli x=ra. uniform ( 0, 1 ) # Tasajakauma 0 1 p r i n t ( A r v o t t u luku, x ) # T a r k i s t u s i f ( x < = 1. / 3. ) : # Alussa? p r i n t ( " on alueen (0,1) alussa " ) # " e l i f ( x > 1. / 3. and x < = 2. / 3. ) : # Keskella? p r i n t ( " on alueen (0,1) k e s k e l l a " ) # " else : # Lopussa? p r i n t ( " on alueen (0,1) lopussa " ) # " Esimerkki tulostus Arvottu luku 0.47168990090816765 on alueen (0,1) keskella

L4: input komennolla ohjelma Inputmalli1.py kysyy syötteen Syöte on stringi (s.o. tekstiä) Syöte muutetaan alla numeroksi komennoilla eval tai float Kopioidaan kotisivulta ja ajetaan ohjelmaa # ============================================================ # Tama ohjelmani I n p u t m a l l i 1. py on m a l l i " i n p u t " komennon # kaytosta. Se lukee annetun syotteen s t r i n g i n a nimi = i n p u t ( Kerro nimesi ) p r i n t ( Hauska t u t u s t u a, nimi ) i k a = i n p u t ( Kerro ä i k s i ) p r i n t ( Olet s i i s, nimi, j a o l e t, ika, v uotta vanha ) ika1 = eval ( i k a ) # Tapa 1 : Muuntaa s t r i n g i n i k a numeroarvoksi p r i n t ( Olet s i i s, ika1 12, noin kuukautta vanha ) ika2 = f l o a t ( i k a ) # Tapa 2 : Muuntaa s t r i n g i n i k a numeroarvoksi p r i n t ( Olet s i i s, ika2 365, noin paivaa vanha ) # ============================================================