Zápis do souboru – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zápis do souboru – Python – Fórum – Programujte.comZápis do souboru – Python – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
1. 2. 2015   #1
-
0
-

Ahoj,

mám celkem stupidní problém, ale nevím si s ním rady. Můžete mi pomoct?

Mám soubor trojuhelnik.txt, ze kterého načtu hodnoty a na základě těch hodnot vypočtu obsah a obvod.

Poté chci vypočtené hodnoty obsah a obvod uložit do nového souboru, tam je problém.

Když hodnoty obvod a obsah vytisknu (print) tak je vidim, ale nemuzu je zkopirovat do noveho souboru...

Níže je kod

import sys, os, math # import knihoven os, sys a math

vstup = "trojuhelnik.txt"
nazev = "vystup.txt"
otevri = open(vstup, "r+") 
otevri1 = open(nazev, "w")
radky = otevri.readlines() 

radek = radky[1].split(";") 

c = float(radek[0]) 
alfa = float(radek[1]) 
r = float(radek[2]) 

#  Dopocet potrebnych hodnot

a = 2*r*math.sin(math.radians(alfa)) 
singama = c/(2*r)
gama = math.degrees(math.asin(singama)) 
beta = 180 - (alfa + gama) 
b = 2*r*math.sin(math.radians(beta)) 

obvod = a + b + c 

obsah =(a * b * c)/(4*r) 

otevri1.write('Obsah trojuhelniku je' obvod)

print "Obvod trojuhelniku je ", obvod, "x."
print "Obsah trojuhelniku je ", obsah, "x^2."

otevri.close()
otevri1.close()

Nahlásit jako SPAM
IP: 81.91.218.–
gcx110
Návštěvník
1. 2. 2015   #2
-
0
-

#1 Martin
Chyba bude nejspíš tady:

otevri1.write('Obsah trojuhelniku je' obvod)

Mělo by to být takhle:

otevri1.write('Obsah trojuhelniku je %d' % obvod)
Nahlásit jako SPAM
IP: 46.23.54.–
Martin
~ Anonymní uživatel
1600 příspěvků
1. 2. 2015   #3
-
+1
-
Zajímavé

#2 gcx11
Ano, je to tak. Díky moc:)

Ps: jak udělat z výsledku flout? Vysledek mam zaokrouhleny...Mohl by jsi mi vysvetlit %d..

Díky moc

Nahlásit jako SPAM
IP: 81.91.218.–
Martin
~ Anonymní uživatel
1600 příspěvků
1. 2. 2015   #4
-
0
-

#2 gcx11
Jeste otazka, kdyz chci aby mi to vypsalo texty na kazdy radek zvlast v souboru, jak na to? 

Viz. níže mi to nefunguje:

otevri1.write('Obsah trojuhelniku je %d' % obsah 'x.'\n)
otevri1.write('Obvod trojuhelniku je %d' % obvod 'x^2.)

Díky

Nahlásit jako SPAM
IP: 81.91.218.–
q
~ Anonymní uživatel
219 příspěvků
1. 2. 2015   #5
-
+1
-
Zajímavé

Když na řetězec použiješ operátor %, tak výsledkem je původní řetězec, ve kterém se značky %x nahradí hodnotami na pravé straně. %d je pro celá čísla, %f pro desetinná čísla, %s pro řetězce atd.

'Ahoj, ja jsem %s a je mi %d roku.\n' % ('Pepik', 14)
# ==> 'Ahoj, ja jsem Pepik a je mi 14 roku.\n'

Takže ten tvůj pokus by byl takhle:

'Obsah trojuhelniku je %d x.\n' % obsah

Ale možná pro tebe bude stravitelnější prostě sčítat řetězce: 

'Obsah trojuhelniku je ' + str(obsah) + ' x\n'
Nahlásit jako SPAM
IP: 213.211.51.–
sliziky
~ Anonymní uživatel
11 příspěvků
5. 2. 2015   #6
-
0
-

No ja si myslim ze na to cez % nemusis ak nechces,malo by to fungovat aj takto:
otevri1.write('Obsah trojuhelniku je' , obvod)

Nahlásit jako SPAM
IP: 78.98.3.–
gcx110
Návštěvník
5. 2. 2015   #7
-
0
-

#6 sliziky
Ne, jelikož metoda write bere jenom jeden argument.

Nahlásit jako SPAM
IP: 79.110.44.–
hanpari0
Stálý člen
6. 2. 2015   #8
-
+1
-
Zajímavé

#6 sliziky
Nebo použij format, to je srozumitelnější a modernější a dělá to totéž co %. % je ale stručnější.

"Obvod je {}.".format(obvod)

Nahlásit jako SPAM
IP: 178.72.234.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Zápis do souboru — založil Earl Cash

Zapis do souboru — založil Ondřej Karanský

Zápis do souboru — založil Robert

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý