【问题标题】:is the print statement correct?打印语句正确吗?
【发布时间】:2013-01-15 22:09:46
【问题描述】:

我必须添加 str(iterMul(a,b)) 才能获得我想要的。这是正确的做法吗?

def iterMul(a,b):
    result = 0
    while b > 0:
        result += a
        b -=1
    return result
a=int(raw_input('Enter an integer: '))
print('')
b=int(raw_input('Enter an integer: '))
print('')
print (str(a) + ' times '+str(b)+' is equal to '+ str(iterMul(a,b)))

提前致谢!

【问题讨论】:

  • print('') 的意义何在?为什么不直接使用结束符(例如\n)?
  • 格式化是正确的方法。但是一个快速简单的版本是使用, 而不是+ 来组合要打印的项目:print a, ' times ', b, ' is equal to ', iterMul(a,b)
  • @F3AR3DLEGEND:很好的问题,但后续有点混乱。 print('\n') 将打印 两个 空行。我认为你想要的只是print()(对于 Python 3)或 print(对于 Python 2)。 (顺便说一句,我已经看到人们使用print(''),因为它是在 Python 2 和 3 中打印单个空行的最短的东西……但我认为 OP 没有这样做。 )
  • @abarnert33 - 我相信他的意思只是将换行符添加到要打印的字符串中......
  • @abarnert 这就是我的意思。如果你想打印两件东西,中间有一条线,你可以这样做:print('line1\n\nline2')。第一个\n 将光标放在下一行,下一个也一样。因此,它将在一行上打印'line1',中间有一个空行,然后打印'line2'

标签: python python-2.7


【解决方案1】:

改用string formatting

print '{0} times {1} is equal to {2}'.format(a, b, iterMul(a,b))

字符串格式在插入值时会自动将整数转换为字符串,并且比print value, ' some text ', othervalue, ' more text and ', thirdvalue更具可读性。

【讨论】:

  • 正如 cmets 中有人指出的那样,这里不需要字符串格式:可以将更多参数传递给print
  • @delnan:当然,但字符串格式化通常是一个更好的主意。
  • 我不同意。它增加了不必要的嵌套和复杂性——多参数版本更扁平,至少对我来说是可读的。
  • 我怀疑 OP 使用的是 Python 3,而不是 2。如果是这样,这段代码和评论都会引发 SyntaxError。但是这段代码的优势在于,只需将其包裹在括号中即可使其同时与 2 和 3 一起使用——而对于注释版本,将其包裹在括号中将使 2 打印出丑陋的 tuple repr 而不是打算好的字符串。
  • @abarnert:它最初只被标记为python-2.7。在 Python 2 上将表达式括在括号中不是一个好主意; print (1, 2) 将在 2 或 3 中打印完全不同的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
相关资源
最近更新 更多