1

目的是放入差异年龄,如果输入 -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
4

3 回答 3

6

你的代码有两个问题

  1. 您正在跳过您的第一个输入,并且您没有将其添加到您的总数中
  2. 您正在将最后一个终止符输入添加-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
于 2013-01-22T03:39:49.423 回答
1

问题是您的while条件正常工作,但直到您下一次运行时才触发它。因此,如果您的输入为 -1,则:

age = input("Enter an age ")
Totalage = Totalage + age

将年龄递减 -1 并在下一个循环中退出循环。为了调整,你可以做这样的事情。请注意,其中一项调整正在更改inputraw_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您需要执行以下操作才能将数字转换为整数。如果有人输入了不正确的值(例如“十”),这将失败,所以如果这是一个问题,您将不得不添加一些额外的错误处理。

于 2013-01-22T03:39:34.713 回答
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
于 2013-01-22T03:39:54.980 回答