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

Zeitberechnung für ISDN

Beitragvon Marz » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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])

Beitragvon mawe » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

Beitragvon Marz » 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!
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » 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: Alles auswählen

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

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

Beitragvon Marz » Montag 20. Dezember 2004, 07:53

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

Beitragvon jens » 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...

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Majestic-12 [Bot]