Zeitberechnung für ISDN

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
Marz
User
Beiträge: 7
Registriert: Sonntag 19. Dezember 2004, 20:22

Sonntag 19. Dezember 2004, 20:33

Ich habe mir ein kleines Prog geschieben, dass mir die Downloaddauer mit meiner ISDN berechnet.

Code: Alles auswählen

#!/usr/bin/python
#berechung der downloadzeit
bps=64000 # Bit pro Sekunde
mb=int(raw_input("Bitte die Dateigröße in MB angeben: "))
byte_pm=(bps/mb)*60
datei=mb*10**6 			# acht mal zehn hoch sechs
dauer=datei/byte_pm
print "Der Download dauert", dauer, "Minuten"
Das prog funzt soweit einwandfrei. Aber wen ich 1 eingebe bringt er mir also hab ich es so probiet:

Code: Alles auswählen

dauer=float(datei/byte_pm)
anstatt der erwarteten 0.* (*=irgendwas) kommt 0.0 ! Könnt ihr mir weiterhelfen?

PS:
Bin ganz neu hier und hab schon viele gute lösungsansätze gefunden. Im moment stehe ich noch am anfang mit meinen Python Künsten aber ich will gerne das noch vertiefen vielleicht habt ihr ein paar gute Programierideen mir denen ihr angefangen habt, denn ich stecke mir die Ziele immer zu hoch :wink: .

Thx

Marz
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 19. Dezember 2004, 20:49

Bei dir gibt datei/byte_pm einen int, der dann mit float einfach eine Nullstelle bekommt. Mach es so:

Code: Alles auswählen

dauer = float(datei)/float(byte_pm)
Edit: Daduch werden zwei float werte geteilt und raus kommt ein float Wert. Bei Fragen einfach nochmal nachhacken :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Sonntag 19. Dezember 2004, 21:15

Hi!

Bei dem Beispiel von Leonidas würde auch ein float reichen:

Code: Alles auswählen

dauer = datei / float(byte_pm)
In deinem Fall reicht es sogar, wenn Du bps als float angibst:

Code: Alles auswählen

bps = 64000.0
Noch ein kleiner Tipp: wenn Du Fehler suchst, fang damit an, Zwischenergebnisse zu überprüfen. So sieht man leicht wo genau der Fehler auftritt.

Code: Alles auswählen

...
byte_mp = (bps/mb)*60
print byte_mp
datei = mb*10**6
print datei
...
Gruß, mawe
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 19. Dezember 2004, 21:40

mawe hat geschrieben:Bei dem Beispiel von Leonidas würde auch ein float reichen:

Code: Alles auswählen

dauer = datei / float(byte_pm)
Genau, hast wieder einmal Recht :) Int durch int gibt int, float durch int gibt float, int durch float gibt float und float durch float gibt float. Sobald ein float vorkommt, gibt es also einen Float als Ergebnis.

Weiterer Tipp, es gibt auch noch einen Teilungsoperator, floordivision: //. Spiel einfach mal ein wenig damit, du merkst wofür das gut ist (eigentlich selten benötigt).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Marz
User
Beiträge: 7
Registriert: Sonntag 19. Dezember 2004, 20:22

Sonntag 19. Dezember 2004, 22:48

Thx es klappt.
damit es mir nich tausend kommastellen zeigt habe ich folgendes gemacht:

Code: Alles auswählen

dauer = str(dauer)
print "Der Download dauert", dauer[0 :5], "Minuten"
gibt es da noch einen zweiten weg ohne die integer in ein string zu verwandeln und das er gleich mit rundet? Frei nach dem motto "there are two ways to do" :D

Ich fang richtig an Python zu mögen.

PS: Unter welche Lizenz soll ich mein Programm sellen ??? *joke!*

--edit--
Ich habe die lösung!

Code: Alles auswählen

dauer=round (dauer,2)
alte Treats können manchmal ganzschön praktisch sein!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Montag 20. Dezember 2004, 00:26

Hi Marz,

die Ausgabe geht auch so:

Code: Alles auswählen

print "Der Download dauert %.2f Minuten" % dauer
siehe auch: http://docs.python.org/lib/typesseq-strings.html


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Montag 20. Dezember 2004, 07:28

Hi!
Marz hat geschrieben: Unter welche Lizenz soll ich mein Programm sellen ???
Ich würde es patentieren lassen :D

Gruß, mawe
Marz
User
Beiträge: 7
Registriert: Sonntag 19. Dezember 2004, 20:22

Montag 20. Dezember 2004, 07:53

Ja wunderbar "Softwarepatente" sind ja im kommen :?
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 20. Dezember 2004, 07:58

Dookie hat geschrieben:siehe auch: http://docs.python.org/lib/typesseq-strings.html
Diese Seite hatte ich irgendwann mal gesucht und nicht gefunden :( Nur ein paar Beispiele auf der Seite währe nett...
Antworten