Kirjoittaja Aihe: Python 3 scriptaus [Ratkaistu]  (Luettu 1705 kertaa)

Rommel2

  • Käyttäjä
  • Viestejä: 73
    • Profiili
Python 3 scriptaus [Ratkaistu]
« : 19.05.09 - klo:16.07 »
Terve.

Kiinnostuin scriptauksesta ja Python ohjelmoinnista. Yritin ajaa Python 3 -kielellä tekemäni scriptin (CtoK.py):

Koodia: [Valitse]
#! /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:

Koodia: [Valitse]
xxxxx@xxxxx:~$ CtoK.py
How many Celsius? 30
(30, 'C =', 303.14999999999998, 'K')

Tulosteen olisi pitänyt näyttää mielestäni tältä:

Koodia: [Valitse]
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?
« Viimeksi muokattu: 21.05.09 - klo:00.51 kirjoittanut Rommel2 »

snifi

  • Vieras
Vs: Python 3 scriptaus
« Vastaus #1 : 19.05.09 - klo:16.15 »
En tiedä mikä olisi kaikkein elegantein tapa, mutta molemmissa versioissa pitäisi toimia tällaisen:

Koodia: [Valitse]
print(str(temperature)+" C = "+str(temperature + 273.15)+" K")



SuperOscar

  • Käyttäjä
  • Viestejä: 3631
  • Tänään täällä, huomenna poissa
    • Profiili
    • Legisign.org
Vs: Python 3 scriptaus
« Vastaus #2 : 19.05.09 - klo:16.38 »
Koodia: [Valitse]
...
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 lisää):

Koodia: [Valitse]
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:

Koodia: [Valitse]
print('%.2f C = %.2f K' % (temperature, temperature + 273.15))
openSUSE Leap 15.2 (pöytäkone 1, kannettavat 1, 2 & 3), openSUSE Tumbleweed (pöytäkone 2), LibreELEC 8.2.5 (RPi 1), Raspbian GNU/Linux 10 (RPi 2)

snifi

  • Vieras
Vs: Python 3 scriptaus
« Vastaus #3 : 19.05.09 - klo:17.17 »
Ilmeisesti on niin, että todellakin Python-versio joka käynnistyy ei ole 3 vaan 2. Saat varmuuden siitä kun lisäät skriptiisi seuraavat rivit:

Koodia: [Valitse]
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:

Koodia: [Valitse]
#!/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ä.


Rommel2

  • Käyttäjä
  • Viestejä: 73
    • Profiili
Vs: Python 3 scriptaus
« Vastaus #4 : 20.05.09 - klo:02.01 »
Ilmeisesti on niin, että todellakin Python-versio joka käynnistyy ei ole 3 vaan 2. Saat varmuuden siitä kun lisäät skriptiisi seuraavat rivit:

Koodia: [Valitse]
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).

mikko_h

  • Käyttäjä
  • Viestejä: 202
    • Profiili
Vs: Python 3 scriptaus
« Vastaus #5 : 20.05.09 - klo:11.29 »
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

Rommel2

  • Käyttäjä
  • Viestejä: 73
    • Profiili
Vs: Python 3 scriptaus
« Vastaus #6 : 21.05.09 - klo:00.51 »
Okei. which-käsky löysy python 3:n ja ongelma ratkesi. Kiitos kaikille neuvoista!