我是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
我感谢您对此问题的任何帮助或帮助。
答案 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