我想輸入幾個數字,並獲得輸出與總數和計數器多少輸入,直到輸入字符串「。」。但它只是一次又一次地添加第一個輸入。我究竟做錯了什麼?簡單的蟒蛇Cicle不工作
sum = 0
counter = 0
x = float(input())
while x!=".":
sum = sum + x
counter += 1
print ("sum:",sum)
print ("counter:",counter)
我想輸入幾個數字,並獲得輸出與總數和計數器多少輸入,直到輸入字符串「。」。但它只是一次又一次地添加第一個輸入。我究竟做錯了什麼?簡單的蟒蛇Cicle不工作
sum = 0
counter = 0
x = float(input())
while x!=".":
sum = sum + x
counter += 1
print ("sum:",sum)
print ("counter:",counter)
我想你的意思是每一個獲得新的輸入迭代,並打破循環,當輸入".'
這裏是你應該做的:
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)
'input'的輸出*在Python 3中保證*是'str';不需要檢查它的類型(這與'isinstance'更習慣地完成,而不是類型對象比較,以適應子類化)。 – chepner
謝謝大聲笑不知道我在想什麼... –
你不能做:
float()
的:
"."
此功能只接受數字。
而且你需要做的:
input()
成一個圈
你必須調用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)
內運行,同時還 – Igor
輸入你必須使用try-except(float(input())),因爲當你輸入一個字符串時你會得到值錯誤。你需要處理。 – utengr