Daraus einen float?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

Mittwoch 1. Oktober 2008, 21:06

Hey ich hab nur ne kleine frage undzwar.
Wie mache ich jetzt aus display_byte einen Float (fließkommazahl)
Ich möchte ja natürlich das die kilobyte mit komma angezeigt werden.
Danke ihr würdet mir sehr helfen

Code: Alles auswählen

print """
Welcome to txtcounter \n
Make sure that you switched to the directory where your txt file is saved"""


txt_to_count = input(str("Drag a txt file in here:"))

a = open(txt_to_count , "r")
x = a.read()
print len(x)  , "letters"


display_byte = len(x) * 1024
print display_byte 

:roll:
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Mittwoch 1. Oktober 2008, 21:14

Also, wenn ich zwei Ganzzahlen miteinander multipliziere, kommt immer eine Ganzzahl heraus. Wozu und wo willst du an der Stelle ein Komma sehen?

Ansonsten gibt es verschiedene Varianten. Du könntest statt mit 1024 mit 1024.0 multiplizieren, was eine implizite Typänderung des Ergebnisses bewirkt. Oder du nutzt 'float(x)' zur Umwandlung des Wertes. Und dann gibt es noch das String-Formatting ('%f'), mit dem du den von dir gewünschten Effekt vielleicht auch hinbekommst. Aber wie oben geschrieben: In dem von dir angeführten Beispiel macht es keinerlei Sinn.

Edit: Division durch 1024.0 wäre sinnvoller ...
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

Mittwoch 1. Oktober 2008, 21:19

alles klar danke x)
DasIch
User
Beiträge: 2435
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 1. Oktober 2008, 21:20

input ist böse, du schliesst die Datei nicht und du kannst dafür float verwenden.

Einfacher und sinnvoller ist übrigens os.stat zu verwenden.
lunar

Mittwoch 1. Oktober 2008, 22:04

Alternativ os.path.getsize(). Auf jeden Fall sollte man die Dateigröße nicht bestimmen, in dem man alles einliest und davon die Länge nimmt. Das ist langsam und scheitert bei großen Dateien.
BlackJack

Donnerstag 2. Oktober 2008, 07:28

Ob in der Datei ``len(x)`` Buchstaben enthalten sind hängt auch von der Kodierung der Datei und der Definition von Buchstabe ab. Sind "whitespace"s "Buchstaben"? Sind Ziffern "Buchstaben"?
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Donnerstag 2. Oktober 2008, 11:35

Meintest Du vielleicht

Code: Alles auswählen

display_byte = len(x) / 1024.0
?
MfG
HWK
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

Donnerstag 2. Oktober 2008, 15:18

@ Hwk ja das meinte ich :D
Also nehm ich dann einfach raw_input?
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Donnerstag 2. Oktober 2008, 17:33

Rootmentor hat geschrieben: Also nehm ich dann einfach raw_input?

Code: Alles auswählen

txt_to_count = input(str("Drag a txt file in here:")) 
zu

Code: Alles auswählen

txt_to_count = raw_input("Drag a txt file in here:")
ändern.

Code: Alles auswählen

str("Drag a txt file in here:")
bewirkt übrigens gar nichts ;)
Antworten