2016-12-01 13 views
3

私は2つの値のどちらがゼロに最も近いかを調べるために小さな関数を書いています。私が抱えている問題は、最後にprintステートメントが付いています。テキストを印刷して、最も近いと判断した値を続けて印刷します。変数の値を使ってテキストを印刷する方法

def closestcheck(ylow, yhigh, ylist, xlist): 
    ynew = (ylow + yhigh)/2 
    #The following 2 prints are purely to check the calculations are correct 
    print(ynew) 
    print(ylow,yhigh) 
    if ynew > 0: 
     print('The closest value of theta is' % ylow) 
    else: 
     print('The closest value of theta is' % yhigh) 

closestcheck(y0[-1],y0[-2],y0,x0) 

それはシータの最も近い値が

あるテキストではなく、数

6.13910823576e-07

-3.46867223283e-06 4.69649387998e-06

を印刷します

この特定の構文は、他のケースここにはいない、なぜ私は確信しています。なぜこれが動作していないのか、それを修正する方法についての説明は大変ありがとうございます、ありがとうございます!

答えて

3

文字列テンプレートを使用しようとしていますが、変数を入力するテンプレートの場所を指定していません。

if ynew>0: 
    print('The closest value of theta is %f' % ylow) 
else: 
    print('The closest value of theta is %f' % yhigh) 

あなたはそれに取り組んでいる一方で、おばあちゃんのリネン戸棚、これらの日のような臭いの%種類の文字列のテンプレート。これを代わりに使用することをおすすめします。

y_closest = ylow if ynew > 0 else yhigh 
print('The closest value of theta is {y}'.format(y=y_closest)) 
+0

ありがとうございます!それは今、完璧に動作します。だから、%fはマーカーで、 '%'の後ろの%の後ろに浮動小数点を置くでしょうか? –

+0

文字列の書式設定(https://pyformat.info/)の詳細については、これをお読みください。 '%f'はその値を浮動小数点数として出力します。文字列を出力する場合は、 '%s'を使用します。 –

関連する問題