请教一个python字符串关于{}问题

Heessy 2018-04-13 12:11:23
先上源码python3.6

width = int(input('please enter width: '))

price_width = 10
item_width = width - price_width

header_fmt = '{{:{}}}{{:>{}}}'.format(item_width,price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width,price_width)

print('='*width)

print(header_fmt.format('Item','Price'))

print('-'*width)

print(fmt.format('Apples',0.4))
print(fmt.format('Pears',0.5))
print(fmt.format('Cantaloupes',1.92))
print(fmt.format('Dried Apricots (16 oz.)',8))
print(fmt.format('Prunes (4 lbs.)',12))

print('='*width)


#python版本3.6.
#fmt= '{{:{}}}{{:>{}.2f}}'.format(item_width,price_width)
#print(fmt.format('Pears',0.5))
#我的问题点是在那三层花括号

#假设执行完第一行以后,其变为
#fmt= '{{:_num}}{{:>_num.2f}}'
#那它输出不应当是有一层花括号输出的吗?
#为什么不是两层花括号?
...全文
897 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2018-04-13
  • 打赏
  • 举报
回复
跟fmt % args 格式化方法中%%转义%一样, format中为了输出大括号,要用两个大括号来转义 所以你假设的不对,第一次执行后就变成下面这样了。 header_fmt {:10}{:>10} fmt {:10}{:>10.2f}
Heessy 2018-04-13
  • 打赏
  • 举报
回复
还是谢谢一下
nfhnb 2018-04-13
  • 打赏
  • 举报
回复
看不懂,只会python2.7
JUST_null_ 2018-04-13
  • 打赏
  • 举报
回复
引用 3楼混沌鳄鱼 的回复:
跟fmt % args 格式化方法中%%转义%一样, format中为了输出大括号,要用两个大括号来转义 所以你假设的不对,第一次执行后就变成下面这样了。 header_fmt {:10}{:>10} fmt {:10}{:>10.2f}
但是,调用.format(str,num)后它的输出是没有花括号的,您说的直接print我没有实验,谢谢您的答复

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧