2016-05-27 13 views
0

Ich frage mich, ob diese denselben Code mit einem for loop gemacht werden könnte anstelle eines whileÄndern while-Schleife für Schleife

d = 0.6 
b = 0.0 
h = 0.0 
t = 0.0 
count = 0 

h = float(input("enter height: ")) 
b = float(input("enter a number of bounces: ")) 

t = h 

while count < b: 
    if count == b - 1: 
     t += h * d 
     #print(t) 
    else: 
     h = h * d 
     t += h * 2 
     #print(t) 
    count += 1 
    #print (t) 
print(t) 

Antwort

1

Als GLHF mich daran erinnert, die b sollte unten für den Code ein int sein, um arbeiten.
Ich sehe keinen Grund für eine Variable b, die eine Anzahl von Bounces zu einem Float darstellt. Darüber hinaus haben Sie in Ihrem ursprünglichen Code einen Vergleich zwischen count (ein int) und b (float von Benutzereingabe). In einem Fall, wo b kein Schwimmer mit einem 0 für den Dezimalteil ist, würde die Prüfung fehl, so dass Sie die Zeile b = int(input('Enter the number of bounces))

for count in range(b-1): # generates a sequence from 0 to b-2 
    h *= d 
    t += h * 2 
    #print(t) 
t += h * d 
print(t) 

range()

+1

Sie können keine Float-in-Range-Funktion verwenden. Es muss eine Ganzzahl sein. Und wenn Sie 'round()' verwenden, wird sich das Ergebnis ändern, überprüfen Sie zuerst die Variablen von OP. Diese Antwort ist weit entfernt von dem, was OPs wollen. – GLHF

+0

@GLHF Das stimmt, vielen Dank für Ihre Hinweise. Ich denke, ich habe gerade gelesen, dass b für Bounces steht, was natürlich int wäre. – hlfrmn

+0

Auch das Ergebnis Ihrer Antwort ist nicht korrekt, Sie sollten den Bereich (b) anstelle von (b-1) und "if" - "else" -Anweisungen verwenden. – GLHF

0

ändern möchten Da Sie don‘ t ändern Sie Ihre Variablen von float geben Sie integer Sie können es nicht tun, weil Sie range() Funktion benötigen und range() akzeptiert nur Integer-Typ.

Wenn Sie Ihre Variablen auf eine ganze Zahl anstelle von float setzen, können Sie sie in einer for-Schleife verwenden.

d = 0.6 
b = 6 #bounce 
h = 5 #height 
t = 0.0 
count = 0 

t = h 

for x in range(b): 
    if count == b-1: 
     t += h*d 
    else: 
     h *= d 
     t += h*2 

    count += 1 
print (t) 
Verwandte Themen