Seite 1 von 1
Zeitberechnung für ISDN
Verfasst: Sonntag 19. Dezember 2004, 20:33
von Marz
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:
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

.
Thx
Marz
Verfasst: Sonntag 19. Dezember 2004, 20:49
von Leonidas
Bei dir gibt datei/byte_pm einen int, der dann mit float einfach eine Nullstelle bekommt. Mach es so:
Edit: Daduch werden zwei float werte geteilt und raus kommt ein float Wert. Bei Fragen einfach nochmal nachhacken

Verfasst: Sonntag 19. Dezember 2004, 21:15
von mawe
Hi!
Bei dem Beispiel von Leonidas würde auch ein float reichen:
In deinem Fall reicht es sogar, wenn Du bps als float angibst:
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
Verfasst: Sonntag 19. Dezember 2004, 21:40
von Leonidas
mawe hat geschrieben:Bei dem Beispiel von Leonidas würde auch ein float reichen:
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).
Verfasst: Sonntag 19. Dezember 2004, 22:48
von Marz
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"
Ich fang richtig an Python zu mögen.
PS: Unter welche Lizenz soll ich mein Programm sellen ??? *joke!*
--edit--
Ich habe die lösung!
alte Treats können manchmal ganzschön praktisch sein!
Verfasst: Montag 20. Dezember 2004, 00:26
von Dookie
Hi Marz,
die Ausgabe geht auch so:
siehe auch:
http://docs.python.org/lib/typesseq-strings.html
Gruß
Dookie
Verfasst: Montag 20. Dezember 2004, 07:28
von mawe
Hi!
Marz hat geschrieben:
Unter welche Lizenz soll ich mein Programm sellen ???
Ich würde es patentieren lassen
Gruß, mawe
Verfasst: Montag 20. Dezember 2004, 07:53
von Marz
Ja wunderbar "Softwarepatente" sind ja im kommen

Verfasst: Montag 20. Dezember 2004, 07:58
von jens
Diese Seite hatte ich irgendwann mal gesucht und nicht gefunden

Nur ein paar Beispiele auf der Seite währe nett...