3 回答
TA贡献1829条经验 获得超4个赞
我已经把它分开了,以明确这些语句的作用。您可以将其合并为一行,但这会使代码更难阅读
def PrintXY(x,y):
x_str = '{:.3g}'.format(x) if x else ''
y_str = '{:.3g}'.format(y) if y else ''
print('{:<10} {:<10}'.format(x_str, y_str))
然后运行给出
In [179]: PrintXY(1/3., 1/2.)
...: PrintXY(1/3., None)
...: PrintXY(None, 1/2.)
...:
0.333 0.5
0.333
0.5
确保您的格式保持一致的另一种选择是
def PrintXY(x,y):
fmtr = '{:.3g}'
x_str = fmtr.format(x) if x else ''
y_str = fmtr.format(y) if y else ''
print('{:<10} {:<10}'.format(x_str, y_str))
TA贡献1810条经验 获得超4个赞
你可以试试这个:
def PrintXY(x=None, y=None):
print(''.join(['{:<10,.3g}'.format(n) if n is not None else '' for n in [x, y]]))
您可以轻松扩展以使用x,y和z。
TA贡献1818条经验 获得超7个赞
您可以使代码更具可读性且易于理解问题陈述中的条件,您也可以尝试以下操作:
def PrintXY(x,y):
formatter = None
if x is None and y is None:
x, y = '', ''
formatter = '{} {}'
if x is None:
y = ''
formatter = '{} {:<10,.3g}'
if y is None:
x = ''
formatter = '{:<10,.3g} {}'
else:
formatter = '{:<10,.3g} {:<10,.3g}'
print(formatter.format(x,y))
添加回答
举报