为什么在 % 样式的打印格式中使用算术表达式会出现 TypeError?

Why is it a TypeError to use an arithmetic expression in %-style print formatting?

我尝试使用两种方法输入一个浮点数并输出一个简单的结果:

t = float(input())
print('{:.2f}'.format(1.0 - 0.95 ** t))
print('%.2f' % 1.0 - 0.95 ** t)

第一种方法有效,但第二种方法出现类型错误:

unsupported operand type(s) for -: 'str' and 'float'.

这有什么问题吗?

这一行:print('%.2f' % 1.0 - 0.95 ** t)

Python 试图先做 '%.2f' % 1.0,然后从结果中减去 0.95 ** t。这是个问题,因为第一项是字符串,第二项是浮点数。

使用括号控制运算顺序。该行应该是:

print('%.2f' % (1.0 - 0.95 ** t))