目的是放入差异年龄,如果输入 -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
目的是放入差异年龄,如果输入 -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
你的代码有两个问题
-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
问题是您的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
您需要执行以下操作才能将数字转换为整数。如果有人输入了不正确的值(例如“十”),这将失败,所以如果这是一个问题,您将不得不添加一些额外的错误处理。
问题是您在检查循环条件之前-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