0

Python初心者はこちら。「if」ステートメントで定義された一連の入力変数を追加しようとしていますが、合計を見つけようとすると、値がインラインで表示されます。たとえば、a、b、c、および d が 5 の場合、周長 = 555...

shape = raw_input("Is the plot a (q) quadrilateral or (t) triangle?")
if shape.lower() == "q":
    a = raw_input("What is the length in feet of side 'a'?")
    b = raw_input("What is the length in feet of side 'b'?")
    c = raw_input("What is the length in feet of side 'c'?")
    d = raw_input("What is the length in feet of side 'd'?")
elif shape.lower() == "t":
    a = raw_input("What is the length in feet of side 'a'?")
    b = raw_input("What is the length in feet of side 'b'?")
    c = raw_input("What is the length in feet of side 'c'?")
else:
    print "Please enter 'q' for quadrilateral or 't' for triangle."

if shape.lower() == "q":
    perimeter = a + b + c + d
elif shape.lower() == "t":
    perimeter = a + b + c
else:
    print "Please make sure you enter numbers only."

print perimeter
4

5 に答える 5

2

str値は、数値と同じように加算できます。使用+する演算子は正常に機能しますが、文字列の値を連結します。の結果raw_inputは文字列 ( str) であるため、'555'15 の代わりに表示されるのはそのためです。数値を合計するには、 を使用int()して、値を合計する前に数値に変換します。

try:
    a = int(raw_input('gimme a number'))
except ValueError as e
    print 'that was not a number, son'
于 2013-05-01T06:56:41.407 に答える
1

あなたraw_inputが実際に int() であることを確認してください:

shape = raw_input("Is the plot a (q) quadrilateral or (t) triangle?")
if shape.lower() == "q":
    try:
        a = raw_input("What is the length in feet of side 'a'?")
        b = raw_input("What is the length in feet of side 'b'?")
        c = raw_input("What is the length in feet of side 'c'?")
        d = raw_input("What is the length in feet of side 'd'?")
        perimeter = int(a) + int(b) + int(c) + int(d)
    except ErrorValue as e  
        print "Please make sure you enter numbers only."

elif shape.lower() == "t":
    try:
        a = raw_input("What is the length in feet of side 'a'?")
        b = raw_input("What is the length in feet of side 'b'?")
        c = raw_input("What is the length in feet of side '
        perimeter = int(a) + int(b) + int(c)
    except ErrorValue as e  
        print "Please make sure you enter numbers only."
else:
    print "Please enter 'q' for quadrilateral or 't' for triangle."
于 2013-05-01T07:07:39.040 に答える
0

変数abc、およびには、の代わりにd使用します。 文字列を返しますが、python リテラルとして評価されたコンソール入力を返します。(現時点では、整数を追加するのではなく、文字列を連結しています)。input(prompt)raw_input(prompt)raw_inputinput

于 2013-05-01T07:03:50.763 に答える
0

あなたのコードは良い設計ではありません。さらに形状、六角形、八角形などを追加したい場合はどうでしょう。実際にはdictを使用して、形状マッピングを側面の数に保存できます。形状ごとに複数の if ステートメントを記述する必要はありません。型チェックを行う必要が少なくなり、python 組み込み関数 sum を使用してパラメーターを返すことができます。次に進み、次のことを試してください。

d = {'q': 4, 't': 3}

shape = raw_input("Is the plot a (q) quadrilateral or (t) triangle?\n")

if shape.lower() not in d:
    print "Please enter 'q' for quadrilateral or 't' for triangle."

else:
    sides = []

    for i in range(0,d.get(shape.lower())):
        side = raw_input("What is the length in feet of side " + str(i+1))
        try:
            sides.append(int(side))
        except ValueError:
            print "Integer value only"

    print sum(sides)
于 2013-05-01T07:50:45.373 に答える