1

このコードを使用して、GP の 4 つの初期番号を表示するコードを作成しています。

def progG(a1,q):
    return float(a1), float(a1*q), float(a1*q**2), float(a1*q**3)

def main():
    a1 = input("Informe o valor inicial de sua Progressão Geométrica: ")
    q = input("Informe a razão de sua Progressão Geométrica: ")
    print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q)))
if __name__ == "__main__":      
    main()

これをシェルで実行すると、2 つの質問が表示されますが、次のエラーが表示されます。

Traceback (most recent call last):
  File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 25, in <module>
    main()
  File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 23, in main
    print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q)))
TypeError: float argument required, not tuple
4

3 に答える 3

2

問題は、関数 progG(a1, q) が float ではなくタプル (4 つの値) を返しますが、これを単一の float として出力しようとすることです。

あなたは試すことができます:

geometric_string = ", ".join(["%.f" % x for x in progG(a1, q)])

print"Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são:", geometric_string
于 2013-09-11T00:05:11.430 に答える
1

問題は%.f、単一の float が必要なことですが、タプルにまとめられた 4 つの float を与えていることです。

%sの代わりに を使用することで%.fこれを修正できます%s

print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,(progG(a1,q)))

出力は次のようになります。

Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: (2.0, 6.0, 18.0, 54.0) .

タプル内の数値がどのようにフォーマットされるか、またはタプル自体がどのようにフォーマットされるかを制御できないことに注意してください。したがって、2.0代わりに2を取得し、全体を括弧で囲みます。

さらに細かく制御したい場合は、2 つの手順でフォーマットする必要があります。最初にタプルの文字列を作成し、次にタプルの代わりにその文字列を使用して最終的なフォーマットを行います。完全に制御できるということは、もう少し作業を行う必要があることも意味しますが、それほど悪くはありません。

g = ", ".join("%.f" % x for x in progG(a1, q))
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,g)

そしていま:

Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: 2, 6, 18, 54 .

ここでの最初のトリックはjoin、文字列に対してメソッドを使用することです。これは、一連の文字列を取得してそれらを結合します。たとえば":".join([1, 2, 3, 4])、文字列が表示されます1:2:3:4。2 番目のトリックは、内包表記を使用して、タプルの各メンバーを別のものにマップすることです。この場合、各 floatxを stringにマップします"%.f" % x

于 2013-09-11T00:34:28.087 に答える