此脚本
def P(t, n):
if n == None:
print "%s" % t
else:
print "%-10s %3d" % (t, n)
P('a' , 4)
P('bc' , 12)
P('defgh', 876)
P('ijk' ,None)
打印
a 4
bc 12
defgh 876
ijk
执行时。可以缩短函数P
以使输出保持不变吗?
我曾希望我可以将P
定义为
def P(t, n):
print "%-10s %3d" % (t, n)
但是使用此定义,脚本错误为“ TypeError:%d format:需要一个数字,而不是NoneType ”。
答案 0 :(得分:1)
def P(t, n):
print "%-10s %3s" % (t, ('' if n == None else n))
P('a' , 4)
P('bc' , 12)
P('defgh', 876)
P('ijk' ,None)
答案 1 :(得分:1)
def P(t, n):
print "%-10s %3d" % (t, n) if n else "%s" % t
如果要打印n,如果n = 0
print "%-10s %3d" % (t, n) if n is not None else "%s" % t
如果你有多个args,你可以过滤掉None值并使用str.format。
def P(t, *args):
args = filter(None, args)
print t,("{} "*len(args)).format(*args)
输出:
In [2]: P('defgh', 876, None, 33,None,100)
defgh 876 33 100
或用空格替换None值:
def P(t, *args):
print t,("{} "*len(args)).format(*[arg if arg else " " for arg in args])
输出:
In [4]: P('defgh', 876, None, 33,None,100)
defgh 876 33 100