0

標準形式def polyToString(poly)の多項式を含む文字列を返す関数を定義するにはどうすればよいでしょうか?poly

例: で表される多項式は次の[-1, 2, -3, 4, -5]ように返されます。

"-5x**4 + 4x**3 -3x**2 + 2x**1 - 1x**0"
def polyToString(poly):
    standard_form=''
    n=len(poly) - 1
    while n >=0:
        if poly[n]>=0:
            if n==len(poly)-1: 
                standard_form= standard_form + '   '+ str(poly[n]) + 'x**%d'%n 
            else:
                standard_form= standard_form + ' + '+str(poly[n]) + 'x**%d'%n
        else:
            standard_form= standard_form + ' - ' + str(abs(poly[n])) + 'x**' + str(n)
        n=n-1
    return standard_form
4

2 に答える 2

3

なぜそんなに難しいのですか?

def poly_to_str(coefs):
    return ''.join(['{:+d}x**{:d}'.format(a,n) for n, a in enumerate(coefs)][::-1])

説明

  • enumerate(coefs)これは標準形式のメンバー用nですaax**n
  • '{:+d}x**{:d}'.format(a,n)すべてのメンバーをフォーマットする
  • {:+d}符号付きの 10 進数を出力するよう指示する
  • [..][::-1]メンバーの配列を反転します
  • ''.join(..)それらを1つの文字列に結合します

print poly_to_str([-1, 2, -3, 4, -5])

出力

-5x**4+4x**3-3x**2+2x**1-1x**0

于 2012-11-14T04:57:24.240 に答える
0

初心者には少し読みやすいかもしれません。

def poly2str(coefs):
    retstr=""
    for i in range(len(coefs)):
        if coefs[i] < 0:
            retstr += " -" + str(abs(coefs[i])) + "x**" + str(len(coefs) - i) + " "
        else:
            retstr += "+ " + str(abs(coefs[i])) + "x**" + str(len(coefs) - i) + " "

    return retstr
于 2012-11-14T06:16:07.593 に答える