Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Rommel2 - 19.05.09 - klo:16.07
-
Terve.
Kiinnostuin scriptauksesta ja Python ohjelmoinnista. Yritin ajaa Python 3 -kielellä tekemäni scriptin (CtoK.py):
#! /usr/bin/env python
# CtoK
# This program converts Celsius to Kelvins.
temperature = int(input("How many Celsius? "))
print(temperature,"C =",temperature + 273.15,"K")
Sain scriptin ajettua, mutten ole tyytyväinen sen antamaan tulosteeseen:
xxxxx@xxxxx:~$ CtoK.py
How many Celsius? 30
(30, 'C =', 303.14999999999998, 'K')
Tulosteen olisi pitänyt näyttää mielestäni tältä:
xxxxx@xxxxx:~$ CtoK.py
How many Celsius? 30
30 C = 303.15 K
Epäilen, että olen kokemattomuuttani ajanut scriptini pythonin vanhemmalla 2.x versiolla 3.x:n sijasta. Koneessani on siis molemmat versiot. Onko näin päässyt käymään? Vai mistä python 2.x mainen tulostus johtuu? Olisiko kokeneemmilla scriptaajilla neuvoja?
-
En tiedä mikä olisi kaikkein elegantein tapa, mutta molemmissa versioissa pitäisi toimia tällaisen:
print(str(temperature)+" C = "+str(temperature + 273.15)+" K")
-
...
print(temperature,"C =",temperature + 273.15,"K")
Sain scriptin ajettua, mutten ole tyytyväinen sen antamaan tulosteeseen:
Tuossahan ei ole lainkaan tulostuksen muotoilua. Käytännössä tulostat vain ”tuppelin” (tuple) muotoilemattomana.
Python 3:ssa voisi olla jotain tämäntapaista (tämä on testaamaton, koska läppärissäni on Kubuntu 8.04, johon Python 3:ta ei ole; katso Python 3:n dokumentaatiosta (http://docs.python.org/3.0/tutorial/inputoutput.html#fancier-output-formatting) lisää):
print('{0:.2f} C = {0:.2f} K'.format(temperature, temperature + 273.15))
Mutta tämän pitäisi toimia niin siinä kuin Python 2:ssa:
print('%.2f C = %.2f K' % (temperature, temperature + 273.15))
-
Ilmeisesti on niin, että todellakin Python-versio joka käynnistyy ei ole 3 vaan 2. Saat varmuuden siitä kun lisäät skriptiisi seuraavat rivit:
import sys
print(sys.version)
Ohjeita luettuani tuo alkuperäinen tulostustapa pitäisi olla toimiva versiossa 3. Miten käynnistettävää versiota sitten on mahdollista muuttaa, sitä en tiedä. Jossakin se oli tehty eksplisiittisesti näin:
#!/usr/local/bin/python3.0
Mutta tämä tuskin on suositeltava tapa. Yksi mahdollisuus on käyttää siihen saakka "välimuotoversioita" kunnes järjestelmän päivitys tarjoaa uuden version ensisijaisena, erityisesti jos et pidä asetusten säätämisestä, kuten itse en pidä.
-
Ilmeisesti on niin, että todellakin Python-versio joka käynnistyy ei ole 3 vaan 2. Saat varmuuden siitä kun lisäät skriptiisi seuraavat rivit:
import sys
print(sys.version)
Kyllä, siitähän se oli kyse. Kiitos snifi neuvosta. Luulenpa, että minun täytyy vain muokata sitä toista ehdottamaasi riviä vastaamaan oman koneeni tämän hetkistä tilaa. Sitten pääsen scriptaamaan Python 3:lla. Eli nyt vain selvittelemään, että mikä on se oikea rivi. Koneeseen on siis asennettu ohjelmavarastosta Python (v3.0) ja IDLE (using Python-3.0).
-
Kyllä, siitähän se oli kyse. Kiitos snifi neuvosta. Luulenpa, että minun täytyy vain muokata sitä toista ehdottamaasi riviä vastaamaan oman koneeni tämän hetkistä tilaa. Sitten pääsen scriptaamaan Python 3:lla. Eli nyt vain selvittelemään, että mikä on se oikea rivi. Koneeseen on siis asennettu ohjelmavarastosta Python (v3.0) ja IDLE (using Python-3.0).
Polku löytynee komentamalla
which python3.0
tai
which python3
-
Okei. which-käsky löysy python 3:n ja ongelma ratkesi. Kiitos kaikille neuvoista!