如何使用变量的值打印文本

4

我编写了一个小函数来检查两个值中哪个离零最近。我遇到的问题是在结尾的打印语句中:我希望它打印文本,然后再跟上它确定为最接近的值。

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

最接近theta的值是

这个特定的语法在其他情况下可以工作,但在这里不行,我不确定为什么。非常感谢您提供为什么它不能工作以及如何修复它的解释,谢谢!

1个回答

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))

好的,谢谢!现在它完美地工作了。所以%f是一个标记,会将紧随'号后面的任何浮点数放在%之后? - Craig Gardner
阅读此内容以获取有关字符串格式的更多信息-https://pyformat.info/。`%f`将该值打印为浮点数。如果要打印字符串,则应使用`%s`。 - Andrew Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接