如何总计一个循环?

时间:2013-01-22 03:29:44

标签: python while-loop

目的是将差异输入,如果输入-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

3 个答案:

答案 0 :(得分:6)

您的代码存在两个问题

  1. 您正在跳过第一个输入,而不是将其添加到总计
  2. 您要将最后一个终止符输入-1添加到您的总计。
  3. 只需更改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

    编写上述while循环
    >>> 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