【问题标题】:PythonCrashCourse Pg.151. TypeError: cannot concatenate 'str' and 'NoneType' objectsPythonCrashCourse Pg.151。 TypeError:无法连接 'str' 和 'NoneType' 对象
【发布时间】:2017-01-23 02:41:37
【问题描述】:

在我的书中,Python Crash Course:给出了这段代码,但它给出了一个错误。

def make_pizza(*toppings):
    """Summarize the pizza we are about to make."""
    print("\nMaking a pizza with the following toppings:")
    for topping in toppings:
        print("- " + topping)

make_pizza(make_pizza("peperoni"))

make_pizza(make_pizza("mushroom",'green peppers','extra cheese'))

回溯如下:

打印(“-” + 浇头)

TypeError: 无法连接 'str' 和 'NoneType' 对象

问。这里的 NoneType 对象是什么?是顶吗?如果是,为什么?

即使我在 topping 周围使用 str() ,它也给了我一个有趣的输出:

def make_pizza(*toppings):
"""Summarize the pizza we are about to make."""
print("\nMaking a pizza with the following toppings:")
for topping in toppings:
    print("- " + str(topping))

make_pizza(make_pizza("peperoni"))
make_pizza(make_pizza("mushroom",'green peppers','extra cheese'))

输出:

Making a pizza with the following toppings:

- peperoni

Making a pizza with the following toppings: 

- None

Making a pizza with the following toppings:
- mushroom
- green peppers
- extra cheese

Making a pizza with the following toppings:
- None

第二季度。为什么每个显示 2 个输出? - 一个带有浇头列表的 - 一个没有?

【问题讨论】:

  • 您的比萨饼煮过头了。不要做同样的比萨饼 2 次。这个make_pizza(make_pizza("peperoni")) 应该是make_pizza("peperoni") :D
  • 天哪! :D 对不起!谢谢!
  • 接受 theonlygusti 的回答,因为他已经清楚地描述了您的脚本中发生的事情。

标签: python


【解决方案1】:

你不应该将函数传递给它自己。

替换这些:

make_pizza(make_pizza("peperoni"))
make_pizza(make_pizza("mushroom",'green peppers','extra cheese'))

make_pizza("peperoni")
make_pizza("mushroom",'green peppers','extra cheese')

发生错误的原因是因为您将没有 return 值(它不返回任何值)的函数 make_pizza 传递给自身。

然而,内部函数仍然完全执行。也就是说,您的每个示例中的第二个 make_pizza 运行正常,这就是您获得两个输出的原因。

不过,对于第二个函数,您实际上是在尝试运行:

make_pizza(None)

这当然会导致错误:

print("- " + topping)

因为toppingNone


您有时在输出中看到- None 的原因是str(None)None 转换为"None"(如包含文字文本None 的字符串)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多