TypeError:并非在字符串格式化操作期间转换所有参数

时间:2017-02-11 02:15:28

标签: python python-3.4

Desired output Desired outputvariant 似乎无法找到这段python代码的错误:

print('%-*s', low, '%-*s', mid, ' %-*s', high, '%-*s'
      % (8, "", (var_range//3), "", (var_range//3), "", (var_range//3), ""))

我正在尝试根据用户(low)的输入来区分变量:midhighvar_range//3。 (var_range // 3)充当自定义间距。我希望输出根据用户的范围而变化

P.S。我使用的是Python 3.4.4

2 个答案:

答案 0 :(得分:0)

我不确定您尝试生成的输出,但此示例可能有所帮助:

var_range = 99
print('%*s %*s %*s' % (8, var_range//3, 8, var_range//3, 8, var_range//3))

输出:

  33       33       33

此格式字符串需要3对值,后面的元组中总共有6对值。每对的第一个值是字段宽度(在所有三种情况下都为8),第二个值是要显示的数值(在大多数情况下也是如此,因为您重复了{{1}也是三次)。

我还将每个值的格式从var_range//3更改为'%-*s,因此值显示是右对齐,而不是左对齐宽度。有关详细信息,请参阅string formatting documentation

答案 1 :(得分:0)

使用newer style string formatting

>>> var_range=24
>>> print('{:<{fill}}{:<{fill}}{:<{fill}}'.format(2, 12, 22, fill=var_range//3))
       2      12      22    

由于每个模式的模式相同,因此请为一个字段创建格式并重复3次。

>>> print(('{:>{fill}}' * 3).format(2, 12, 22, fill=var_range//3))
       2      12      22