praegune kellaaeg 29.03.2024 01:15:42
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
sõnum |
|
Prozer
HV kasutaja
liitunud: 09.10.2008
|
03.12.2017 18:03:51
Küsimus Pythoni kohta |
|
|
Õhtust,
ettehoiatuseks - algaja Pythonis 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
_________________ Sidevõrkude ja tehnilise infra arendus. |
|
Kommentaarid: 68 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
67 |
|
tagasi üles |
|
|
Truesight
HV vaatleja
liitunud: 22.08.2015
|
03.12.2017 18:21:47
|
|
|
Õ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 |
|
|
Adebisi
Kreisi kasutaja
liitunud: 05.07.2003
|
03.12.2017 18:55:14
|
|
|
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 |
|
|
Prozer
HV kasutaja
liitunud: 09.10.2008
|
03.12.2017 21:18:55
|
|
|
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
_________________ Sidevõrkude ja tehnilise infra arendus. |
|
Kommentaarid: 68 loe/lisa |
Kasutajad arvavad: |
|
:: |
0 :: |
0 :: |
67 |
|
tagasi üles |
|
|
|
lisa lemmikuks |
|
|
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.
|