如何使用一个打印语句仍然在多行上打印

时间:2014-11-06 16:31:17

标签: python string output

有没有办法我只能使用一个print语句,但仍能达到与下面代码相同的效果?我试图在这种情况下不能使用的结束语句,或者我使用不正确:

print ('Deposit: ' + str(deposit))
print ('Withdrawl: ' +  str(withdrawl))
print ('Available amount: ' + str((deposit + withdrawl)//1))

4 个答案:

答案 0 :(得分:5)

是的,您可以使用\n插入换行符:

print('Deposit: {}\nWithdrawl: {}\nAvailable amount: {}'.format(
    deposit, withdrawl, (deposit + withdrawl) // 1))
但是,它不一定更好。恕我直言在这里使用单独的print()语句更具可读性。

使用字符串连接可以使它稍微好一些:

print(('Deposit: {}\n' +
    'Withdrawl: {}\n' +
    'Available amount: {}').format(deposit, withdrawl, (deposit + withdrawl) // 1)

再次,这不一定更好恕我直言。

我还使用format来提高可读性;这消除了对手动str调用的需要,并且更具可读性(它可以做更多,请参阅链接)。

  

我试过结束语句,其中一个在这种情况下不起作用,或者我使用不正确

我假设您使用了类似print('foo', 'bar', end='\n')的内容,但这不会起作用,因为end仅附加到所有参数的结尾 end ;参数之间打印sep参数(默认为空格) 所以你想做的是:print('foo', 'bar', sep='\n')

这样做的缺点是,您需要进行3次.format来电,或者保持您的丑陋"字符串连接。

答案 1 :(得分:3)

看起来你正在使用Python 3.x.如果是,那么您可以将print的{​​{3}}设置为'\n',以便将每个参数分隔换行:

print('Deposit: ' + str(deposit), 'Withdrawl: ' +  str(withdrawl), 'Available amount: ' + str((deposit + withdrawl)//1), sep='\n')

虽然这确实让你排长队。您可能需要考虑将其分为两行:

print('Deposit: ' + str(deposit), 'Withdrawl: ' +  str(withdrawl),
      'Available amount: ' + str((deposit + withdrawl)//1), sep='\n')

请注意,您也可以在选定位置删除一些换行符。这将允许您简单地写上述内容:

print('Deposit: ', deposit, '\nWithdrawl: ', withdrawl, '\nAvailable amount: ', (deposit + withdrawl)//1)

这个解决方案的好处在于它消除了对str的所有调用(print自动将其参数字符串化)。


最后但并非最不重要的是,如果您实际使用的是Python 2.x,则可以从sep parameter导入Python 3.x print函数。将此行放在代码顶部:

from __future__ import print_function

答案 2 :(得分:1)

您可以使用模板渲染,如:

template = '''Deposit: {0}
Withdrawal: {1}
Available amount: {2}'''

deposit = 1000
withdrawal = 900

print template.format(deposit, withdrawal, (deposit + withdrawal)//1)

但是我没有得到平衡公式,你能解释一下吗?

答案 3 :(得分:0)

或者你可以使用这个

 print(('Deposit: %s\n' +
      'Withdrawl: %s\n' +
      'Available amount: %s') % (deposit, withdrawl, (deposit + withdrawl) // 1)