我想输入几个数字,并获得输出与总数和计数器多少输入,直到输入字符串“。”。但它只是一次又一次地添加第一个输入。我究竟做错了什么?简单的蟒蛇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