Цель состоит в том, чтобы ввести разницу, если введено -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
Christian Braverman 22 Янв 2013 в 07:29

3 ответа

Лучший ответ

В вашем коде есть две проблемы

  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 Предоставляют несколько замечательных инструментов, и для забавы я попытался кодировать вышеуказанный цикл while с 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
6
Abhijit 22 Янв 2013 в 03:51

Проблема в том, что ваше условие 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
RocketDonkey 22 Янв 2013 в 03:44

Проблема в том, что вы добавляете -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
0
James Henstridge 22 Янв 2013 в 03:39