Python打印功能问题

时间:2013-07-07 20:36:23

标签: python string function printing formatting

我是Python的新手,正在使用Python 3.3.2 ..我在将字符串中的数据项包含在我正在尝试打印时遇到问题。 %运算符按字面打印输出:

for miles in range (10, 70, 10):
    km=miles*1.609
    print ("%d miles --> %3.2f kilometers") % (miles, km)

产生

%d miles --> %3.2f kilometers

以及错误:

Unsupported operand type for %: 'NoneType' and 'tuple'

但是当我将第三行更改为:

print (%d "miles -->" %3.2f "kilometers") % (miles, km)

我在%d上遇到语法错误。通过消除“print()”函数,我能够从交互模式使程序正常工作,但如果没有“print()”,它将不会在IDLE中生成输出。我错过了什么?我试图解决这个问题的研究有助于学习更多关于Python的知识,但到目前为止还没有让程序运行起来。顺便说一下它应该输出:

10 miles --> 16.09 kilometers
20 miles --> 32.18 kilometers
30 miles --> 48.27 kilometers
40 miles --> 64.36 kilometers
50 miles --> 80.45 kilometers
60 miles --> 96.54 kilometers

我感谢您对此问题的任何帮助或帮助。

3 个答案:

答案 0 :(得分:4)

% (miles, km)功能中移动print

print函数返回None,因此在您的代码中,您实际上是在尝试执行此操作:

None % (miles, km)

这就是你收到错误的原因。

工作代码:

>>> for miles in range (10, 70, 10):
...      km=miles*1.609
...      print ("%d miles --> %3.2f kilometers" % (miles, km))
...     
10 miles --> 16.09 kilometers
20 miles --> 32.18 kilometers
30 miles --> 48.27 kilometers
40 miles --> 64.36 kilometers
50 miles --> 80.45 kilometers
60 miles --> 96.54 kilometers

使用新款string formatting

>>> for miles in range (10, 70, 10):
        km=miles*1.609
        print ("{:d} miles --> {:3.2f} kilometers".format(miles, km))
...     
10 miles --> 16.09 kilometers
20 miles --> 32.18 kilometers
30 miles --> 48.27 kilometers
40 miles --> 64.36 kilometers
50 miles --> 80.45 kilometers
60 miles --> 96.54 kilometers

答案 1 :(得分:3)

尝试在sting上使用.format()方法

>>> for miles in range(10, 70, 10):
...     km = miles*1.609
...     print ("{0} miles ---> {1} kilometers".format(miles, km))

答案 2 :(得分:2)

你已经得到了关于你的印刷品无法正常工作的答案 - 但是,这种写法的方式略有不同:

miles = range(10, 70, 10)
kms = (m * 1.609 for m in miles)
fmt = '{:d} miles --> {:3.2f} kilometers'.format
print(*map(fmt, miles, kms), sep='\n')

给出:

10 miles --> 16.09 kilometers
20 miles --> 32.18 kilometers
30 miles --> 48.27 kilometers
40 miles --> 64.36 kilometers
50 miles --> 80.45 kilometers
60 miles --> 96.54 kilometers