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

あなたのコードには2つの問題があります

  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
于 2013-01-22T03:39:49.423 に答える
1

問題は、while条件が適切に機能していることですが、次の実行までトリガーされません。したがって、入力が -1 の場合、次のようになります。

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

age を -1 減らし、次のループでループを終了します。調整するには、次のようなことができます。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」など) を入力すると失敗するため、それが懸念される場合は、エラー処理を追加する必要があります。

于 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 に答える