2017-10-21 175 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)