2017-10-21 16 views
-3

Ich versuche, mehrere Zahlen einzugeben und eine Ausgabe mit der Gesamtsumme und den Zähler für wie viele Eingaben, bis die Eingabe ist die Zeichenfolge "." aber es fügt einfach die erste Eingabe immer wieder hinzu. Was mache ich falsch?Einfache Python Cicle funktioniert nicht

sum = 0 
counter = 0 
x = float(input()) 
while x!=".": 
    sum = sum + x 
    counter += 1 
print ("sum:",sum) 
print ("counter:",counter) 
+1

Run Eingang innen während – Igor

+0

auch Sie müssen try-except um float (input()) verwenden, da Sie bei der Eingabe einer Zeichenfolge einen Wertfehler erhalten. Du musst damit umgehen. – utengr

Antwort

0

Ich denke du meinst jede neue Eingabe zu erhalten Iteration und die Schleife unterbrechen, wenn der Eingang ".' Hier ist das, was Sie tun sollten:

sum,counter=0,0 #set numeric variables 
done=False #create a Boolean to control the loop 
while not done: 
    x=input() 
    if x==".": 
     done=True # break the loop if x is "." 
    else: 
     sum+=float(x) 
     counter+=1 
print ("Sum:",sum) 
print ("Counter:",counter) 
+1

Die Ausgabe von 'input' ist * garantiert * als' str' in Python 3; es ist nicht nötig, seinen Typ zu prüfen (was idiomatisch mit 'isinstance' gemacht wird, nicht mit dem Typ-Objekt-Vergleich, um Unterklassen zu berücksichtigen). – chepner

+0

danke lol nicht sicher, was ich dachte ... –

0

können Sie nicht tun:

float() 

von:

"." 

Diese Funktion akzeptiert nur Zahlen.

Auch was Sie tun müssen:

input() 

in eine Schleife

1

Sie haben inputin die Schleife zu nennen, nicht nur vor die Schleife. Sie müssen auch überprüfen, dass der Wert nicht . ist, bevor Sie versuchen, es in eine Gleitkommazahl zu konvertieren.

x = input() 
while x != '.': 
    try: 
     x = float(x) 
    except ValueError: 
     print("{} not a floating point number, ignoring".format(x)) 
    else: 
     sum = sum + x 
     counter += 1 
    x = input() 
print ("sum:", sum) 
print ("counter:", counter) 

Um zu vermeiden, input in zwei getrennten Orten aufrufen, können Sie Ihre Schleife „unendlich“ mit einer expliziten if machen den Stromeingang zu überprüfen:

while True: 
    x = input() 
    if x == ".": 
     break 
    try: 
     x = float(x) 
    except ValueError: 
     print("{} not a floating point number, ignoring".format(x)) 
    else: 
     sum = sum + x 
     counter += 1 
print ("sum:", sum) 
print ("counter:", counter) 
Verwandte Themen