【问题标题】:Why does print('\n') * 100 not work in Python 3.3?为什么 print('\n') * 100 在 Python 3.3 中不起作用?
【发布时间】:2012-12-06 19:06:33
【问题描述】:

我正在尝试清除 Python 中的代码行,并在 Any way to clear python's IDLE window? 上看到了一篇关于如何执行此操作的帖子,但是当我在 IDLE 3.3 中运行以下函数时,我收到以下错误。但它在 2.7.3 版中确实有效。

错误

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    cls()
  File "<pyshell#6>", line 2, in cls
    print('\n') * 100
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

代码

def cls():
    print('\n') * 100

【问题讨论】:

    标签: python-3.x python-2.7


    【解决方案1】:

    你可能是说

    print('\n' * 100)
    

    当你将一个字符串乘以一个整数时,它会重复:

    >>> 'ha' * 3
    'hahaha'
    

    但是你所做的是将print('\n') 的值乘以100。但是print() 没有返回任何东西(阅读:返回None),因此错误:你不能将Noneint 相乘。

    在 Python 2 中没有区别,因为没有括号:

    print '\n' * 100
    

    不过,Python 以与 Python 3 相同的方式解释它(而不是您似乎解释它的方式)。

    【讨论】:

    • 但是NoneType不是一个字符串值吗?如果是这样,为什么不能乘以None * 100
    • @PeanutsMonkey 没有,NoneType is a special type。这种类型只有一个对象,它是None。字符串的类型为str。例如,在 Python shell 中尝试 type(None)type('hello')。当然,您需要将None 与字符串"None" 区分开来。
    猜你喜欢
    • 2011-02-27
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多