2017-10-21 177 views
-3

我想輸入幾個數字,並獲得輸出與總數和計數器多少輸入,直到輸入字符串「。」。但它只是一次又一次地添加第一個輸入。我究竟做錯了什麼?簡單的蟒蛇Cicle不工作

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

內運行,同時還 – Igor

+0

輸入你必須使用try-except(float(input())),因爲當你輸入一個字符串時你會得到值錯誤。你需要處理。 – utengr

回答

0

我想你的意思是每一個獲得新的輸入迭代,並打破循環,當輸入".'這裏是你應該做的:

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

'input'的輸出*在Python 3中保證*是'str';不需要檢查它的類型(這與'isinstance'更習慣地完成,而不是類型對象比較,以適應子類化)。 – chepner

+0

謝謝大聲笑不知道我在想什麼... –

0

你不能做:

float() 

的:

"." 

此功能只接受數字。

而且你需要做的:

input() 

成一個圈

1

你必須調用input循環,不只是之前循環。在嘗試將其轉換爲浮點數之前,您還必須檢查其值不是.

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) 

爲了避免在兩個不同的地方打電話input,你可以讓你的循環「無限」有一個明確的if檢查電流輸入:

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)