如何解决带前置美元符号的右对齐数字输出空格问题?
解决美元符号与数字间的多余空格问题
嘿,这个问题很好解决!你现在的写法是把$单独放在格式化字符串外面,然后只对数字设置右对齐宽度——这就导致数字前面的填充空格跑到$和数字中间去了,自然就出现了多余空格。
修复思路&方案
我们要把$和数字当成一个整体来做右对齐,而不是分开处理。这里给你两种好用的实现方式:
方式1:用f-string快速组合(Python 3.6+推荐)
这种写法最直观,先把$和数字拼成一个字符串,再整体右对齐到指定宽度(这里用总宽度5做例子):
def aligned_num(num): print('{:>5}'.format(f'${num}'))
方式2:嵌套格式化语法(兼容旧版本Python)
如果你的Python版本比较老,用这种嵌套的格式化写法也能达到同样效果:
def aligned_num(num): print('{:>5}'.format('${}'.format(num)))
怎么调整宽度?
上面的{:>5}里的5是整个$+数字字符串的总宽度。如果想要更紧凑的输出,比如总宽度4,改成{:>4}就行。
实现同一行输出多个数字
如果你想像预期的那样,把多个结果在同一行用空格隔开打印,可以稍微调整函数:
def aligned_nums(*nums): print(' '.join('{:>5}'.format(f'${num}') for num in nums)) # 调用示例 aligned_nums(1000, 10, 100)
运行后输出就是:$1000 $10 $100(每个项都整齐右对齐,$和数字完全贴合)
这样就完美解决你的问题啦!
内容的提问来源于stack exchange,提问作者Zoltan
相关产品推荐
相关产品推荐

