【问题标题】:Why is a Nonetype being returned? [duplicate]为什么会返回 Nonetype? [复制]
【发布时间】:2017-02-09 16:23:23
【问题描述】:

我对 Python 还很陌生。我正在制作一个发电机,它可以让面包店估计如果他们正在制作纸杯蛋糕,举办一场活动需要多少费用。不过这里出了点问题

Batches = print("Batches of Cupcakes:", math.ceil(People * Ingredients / 12))

Labor = print("Hours of labor:", Batches * 1.25)

我收到此错误:

TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'

【问题讨论】:

  • print 不返回任何内容,所以BatchesNoneType
  • Pedantic:从技术上讲,BatchesNone,这是 NoneType 类型的唯一实例,Batches 不是类型本身。
  • 试试:type(Batches)
  • “出了点问题” - 你有没有尝试解决它?您应该在提出问题之前尝试解决自己的问题,而不是一看到错误消息就放弃。

标签: python typeerror nonetype operand


【解决方案1】:

因为print 总是返回无。您想将之前的结果保存在一个变量中:

batches = math.ceil(people * ingredients/12)
labor = batches * 1.25

print("Batches of cupcakes:", batches)
print("Hours of labor:", labor)

【讨论】:

  • 谢谢,这绝对是编码太快的情况。
【解决方案2】:

print() 不返回任何内容,因此您尝试不进行任何乘法运算,这就是“NoneType”错误的来源。

如果你希望Batches 是一个数字,

Batches = math.ceil(People * Ingredients / 12)

Print 只是将文本输出到 python 解释器 :)

您的整个代码应如下所示:

Batches = math.ceil(People * Ingredients / 12)
Labor = Batches * 1.25

然后你可以像这样显示数据:

print("Batches of cupcakes:", Batches)
print("Hours of labor:", Labor)

【讨论】:

  • string + int 导致类型错误。而且我不知道你在说什么关于额外的换行符,打印功能默认插入一个空格。
  • @L3viathan 抱歉,我已经纠正了我的错误。我总是忘记 Python 中的字符串和非字符串连接
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2016-09-24
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多