Python字符串格式化问题
>>>'%*.s'%(4,'hi')结果为什么是'',该如何理解我的疑问是为什么'hi'没有输出?如何理解?另外,点(.)后如果没有加精度值,机器将如何执行?还有如果输出...
>>> '%*.s' % (4,'hi')
结果为什么是' ',该如何理解
我的疑问是为什么'hi'没有输出?如何理解?另外,点(.)后如果没有加精度值,机器将如何执行?还有如果输出的是字符串,但是点(.)的前后都有星号(*),那么此时输出的字符串宽度到底是多少?是以前面一个星号为准还是后面的那个? 展开
结果为什么是' ',该如何理解
我的疑问是为什么'hi'没有输出?如何理解?另外,点(.)后如果没有加精度值,机器将如何执行?还有如果输出的是字符串,但是点(.)的前后都有星号(*),那么此时输出的字符串宽度到底是多少?是以前面一个星号为准还是后面的那个? 展开
1个回答
展开全部
*,表示输出的字符的宽度,你给的例子,就是4个字符的宽度
又比如
>>> '%.*s%.*s'%(2, "abce", 3, "324223")
'ab324'
>>> '%.*s%*.s'%(2, "abce", 3, "324223")
'ab '
第一个:2个宽度所以只有ab,后面的只有3个宽度,就是324
需要注意. 和 *的先后顺序
第二个:2宽度,也是ab,后面由于.和*的顺序变了,没有输出字符,但给了3个宽度
======================================================================
这么给你说嘛: '%*.*s'%(10,2, "abce")
第一个*表示输出的‘内容’长度为10
第二个*表示‘abce’这个串,只取前两位,你可以理解为精度
s表示是字符串
结果为:8个空格 + ab
==========再来看你的问题=====================================
'%*.s' % (4,'hi')
我的疑问是为什么'hi'没有输出?如何理解?
[ans:没输出因为.后面没有给int值,所以没输出hi]
另外,点(.)后如果没有加精度值,机器将如何执行?
[ans:结果你已经看到了,没给值就不输出]
还有如果输出的是字符串,但是点(.)的前后都有星号(*),那么此时输出的字符串宽度到底是多少?
[ans:*.*,都给了值,第一个是输出字符串的宽度,第二个是取你给的字符串的宽度,上面给你举得例子, '%*.*s'%(10,2, "abce"),输出宽度为10,取 abce的前两个字符]
是以前面一个星号为准还是后面的那个?
[ans:同上]
又比如
>>> '%.*s%.*s'%(2, "abce", 3, "324223")
'ab324'
>>> '%.*s%*.s'%(2, "abce", 3, "324223")
'ab '
第一个:2个宽度所以只有ab,后面的只有3个宽度,就是324
需要注意. 和 *的先后顺序
第二个:2宽度,也是ab,后面由于.和*的顺序变了,没有输出字符,但给了3个宽度
======================================================================
这么给你说嘛: '%*.*s'%(10,2, "abce")
第一个*表示输出的‘内容’长度为10
第二个*表示‘abce’这个串,只取前两位,你可以理解为精度
s表示是字符串
结果为:8个空格 + ab
==========再来看你的问题=====================================
'%*.s' % (4,'hi')
我的疑问是为什么'hi'没有输出?如何理解?
[ans:没输出因为.后面没有给int值,所以没输出hi]
另外,点(.)后如果没有加精度值,机器将如何执行?
[ans:结果你已经看到了,没给值就不输出]
还有如果输出的是字符串,但是点(.)的前后都有星号(*),那么此时输出的字符串宽度到底是多少?
[ans:*.*,都给了值,第一个是输出字符串的宽度,第二个是取你给的字符串的宽度,上面给你举得例子, '%*.*s'%(10,2, "abce"),输出宽度为10,取 abce的前两个字符]
是以前面一个星号为准还是后面的那个?
[ans:同上]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询