字符串格式化不支持的操作数

时间:2014-05-20 22:00:46

标签: python

我正在尝试创建一个简单的程序,以mm / dd / yy形式打印日月和年份,但我一直收到追溯错误:

%s/%s/%s
Traceback (most recent call last):
  File "C:/Python34/timenow.py", line 4, in <module>
    print('%s/%s/%s')%(now.month, now.day, now.year)
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

我正在使用python 3.4.0

这是我的代码:

from datetime import datetime
now = datetime.now()

print('%s/%s/%s')%(now.month, now.day, now.year)

1 个答案:

答案 0 :(得分:5)

您需要在格式字符串后面放置%运算符:

print('%s/%s/%s' % (now.month, now.day, now.year))

您当前的代码让Python尝试在None返回的print对象上使用它:

>>> type(print('hi'))
hi
<class 'NoneType'>
>>>

另外,我想提两件事。首先,字符串格式化的现代方法是使用str.format而不是%运算符:

print('{}/{}/{}'.format(now.month, now.day, now.year))

第二个是这里不严格需要字符串格式化,因为我们有print函数的sep parameter,它用于将给定print的参数与某个字符串分开:< / p>

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.month, now.day, now.year, sep='/')
5/20/2014
>>>