Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Küsimus Pythoni kohta märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
Prozer
HV kasutaja
Prozer

liitunud: 09.10.2008




sõnum 03.12.2017 18:03:51 Küsimus Pythoni kohta vasta tsitaadiga

Õhtust,

ettehoiatuseks - algaja Pythonis icon_cool.gif Soovin teha programmi, mis loeb *****.txt failist sisse arvud (igal real üks eraldi täis- või ujukomaarv) ja sooritada nende arvudega tsüklis tehteid.

Probleem selles et reahaaval lugedes ei õnnestu mingi nipiga rea väärtust stringist täis- või ujukomaarvuks konvertida. Näide:

fail = open("andmed2.txt", encoding="UTF-8")
for rida in fail:
print("Lugesin sellise rea: " + rida)
print("Esimesel real oli number. Liidame sellele +5 ja saame tulemuseks " + rida+5) #siin siis üritan STR->INT-ks rea väärtust nipitada. Failis on sellel konkreetsel real väärtuseks 34.
fail.close()

..saab erroriks TypeError: must be str, not int

Olen täna terve päeva googeldanud ja mõistus suht otsas, kuidas asjale läheneda. Iga vihje vanadelt kaladelt oleks abiks thumbs_up.gif

_________________
Sidevõrkude ja tehnilise infra arendus.
Kommentaarid: 68 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 67
tagasi üles
vaata kasutaja infot saada privaatsõnum
Truesight
HV vaatleja

liitunud: 22.08.2015




sõnum 03.12.2017 18:21:47 vasta tsitaadiga

Õhtust, pole küll just eriline Püütoni oskaja , aga tundub ,et mida sa mõtled on .format() kasutamine: https://docs.python.org/3/library/stdtypes.html#str.format

miskit sellist:

rida = "34"
print("Esimesel real oli number. Liidame sellele +5 ja saame tulemuseks {}".format(float(rida)+5))
Esimesel real oli number. Liidame sellele +5 ja saame tulemuseks 39.0
Kui see .0 seal ei sobi , siis vastavalt teha mingi funktsioonike, mis tuvastab kas tegu int / float
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
Adebisi
Kreisi kasutaja

liitunud: 05.07.2003



Autoriseeritud ID-kaardiga

sõnum 03.12.2017 18:55:14 vasta tsitaadiga


fail = open("andmed2.txt", encoding="UTF-8")
for rida in fail:
    print("Lugesin sellise rea: " + rida.strip("\n")) # .strip("\n") Eemaldab reavahetuse
    print("Esimesel real oli number. Liidame sellele +5 ja saame tulemuseks " + str(float(rida.replace(',','.'))+5))
    # .replace(',','.') muudab koma punktiks. float() teisaldab ujuvkoma arvuks ja str() teisaldab selle kõik prinditavaks stringiks.
fail.close()
Kommentaarid: 58 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 55
tagasi üles
vaata kasutaja infot saada privaatsõnum
Prozer
HV kasutaja
Prozer

liitunud: 09.10.2008




sõnum 03.12.2017 21:18:55 vasta tsitaadiga

Tänud kaasamõtlejatele!!! Kumbki versioon ei läinud algselt tööle - hakaksin asja uurima ja selgus, et lisaks UTF-8le oskas tavaline Windoosa notepad sinna vaikselt nikerdada ka BOM funktsiooni. Notepad++ lahendas asja ning mõlemad pakutud variandid töötavad thumbs_up.gif
_________________
Sidevõrkude ja tehnilise infra arendus.
Kommentaarid: 68 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 67
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Küsimus Pythoni kohta
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.