我尝试输入多个数字并获得一个带有总和的输出和计数器,直到输入为字符串"和#34;但它只是一遍又一遍地添加第一个输入。我做错了什么?
var image = document.createElement('img');
image.src=image;
image.alt='altimg'
infowincontent.appendChild(image);
答案 0 :(得分: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)
答案 1 :(得分:0)
你做不到:
float()
的:
"."
此功能仅接受数字。
您还需要这样做:
input()
进入循环
答案 2 :(得分: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)