目的是将差异输入,如果输入-1,则程序停止,我的总计陈述错误。有人请帮我解决。
Totalage = 0
age = 0
print "Enter you Family member's ages!"
age = raw_input ("Enter an age ")
while age != -1:
age = input("Enter an age ")
Totalage = Totalage + age
print Totalage
答案 0 :(得分:6)
您的代码存在两个问题
-1
添加到您的总计。只需更改while循环中语句的顺序
age = int(raw_input ("Enter an age "))
while age != -1:
Totalage = Totalage + age
age = int(input("Enter an age "))
另请注意,raw_input
通常会返回一个字符串,在您想要计算之前需要将其转换为int。
Itertools提供一些很棒的工具,为了好玩,我尝试使用itertools.takewhile
>>> from itertools import count, takewhile
>>> sum(takewhile(lambda x: x != -1,
(int(raw_input("Enter an age ")) for e in count())))
Enter an age 20
Enter an age 30
Enter an age 40
Enter an age 50
Enter an age -1
140
答案 1 :(得分:1)
问题是您的while
条件工作正常,但在下次运行之前不会触发它。因此,如果输入为-1,则:
age = input("Enter an age ")
Totalage = Totalage + age
将年龄递减-1并在下一个循环中通过它将退出循环。为了调整,你可以做这样的事情。请注意,一次调整正在将input
更改为raw_input
(通常是Python 2.x中更好的做法,而Python 3.x会更改input
的行为以匹配它):
Totalage = 0
print "Enter you Family member's ages!"
while True:
age = int(raw_input("Enter an age "))
if age == -1:
break
Totalage += age
print Totalage
while True
会让您进入一个连续循环,只要输入值-1
,您就会突破它。此外,int
这里是将数字转换为整数所需的操作。如果某人输入的值不正确(例如“10”),这将失败,因此如果这是一个问题,您将不得不添加一些额外的错误处理。
答案 2 :(得分:0)
问题是您在检查循环条件之前将-1
添加到Totalage
。你可以改写这样的循环:
print "Enter you Family member's ages!"
Totalage = 0
while True:
age = input("Enter an age ")
if age == -1:
break
Totalage += age
print Totalage