【问题标题】:Expected type 'int' got 'float' instead [closed]预期类型“int”改为“float”[关闭]
【发布时间】:2019-08-12 06:02:45
【问题描述】:
weight_lbs = input ('weight (lbs): ')
weight_kg = int(weight_lbs * 0.45)
print(weight_kg)

错误:预期类型“int”改为“float”。

请多多指教。

【问题讨论】:

标签: python python-3.x


【解决方案1】:

我尝试了您的代码,但没有遇到同样的问题,尽管我看到了不同的问题。

这段代码:

weight_kg = int(weight_lbs * 0.5)

应该是:

weight_kg = int(weight_lbs) * 0.5

否则,你会得到这个错误:

TypeError: 不能将序列乘以“float”类型的非整数

原因是您的代码将字符串乘以数字。您需要先将input()返回的字符串转换为数字,然后进行乘法运算。

【讨论】:

  • int 应该是浮点数
  • 这取决于 OP 想要什么。
  • 好吧,如果我重 33.4 磅,你的代码就会中断
  • 这是 OP 问题的有效输入吗?问题中没有足够的信息来确定这一点。
  • 谢谢,蒙德金。确实你的答案是正确的。右括号符号应该在乘号之前。代码现在运行良好。
【解决方案2】:

您输入的weight_lbs 是一个字符串,而不是一个数字。将其转换为intfloat

weight_kg = int( float(weight_lbs) * 0.5)

(另外,一磅不是半公斤。为什么不更准确一点?你有电脑!)

【讨论】:

  • int 应该被删除(我猜) - 或者你需要删除最后一句要求准确性
  • @chris-p-bacon 这真的很难说...... OP 可能想要整数,他们已经明确地试图投射一些东西
  • @chris-p-bacon 这些选择之一是关于他们希望如何表示数据,另一个是对度量相对关系的错误表述。
  • 乘以0.45是正确的。
【解决方案3】:

你可以试试这个:

weight_lbs = input('weight (lbs): ')
weight_kg = int(float(weight_lbs) * 0.5)
print(weight_kg)

【讨论】:

  • 嗨 Nikos。此代码也有效。
【解决方案4】:

它对我有用:

weight_lbs = input('weight (lbs): ')
# I just converted the type of "weight_lbs" to Float and removed the last parenthesis 
weight_kg = float(weight_lbs) * 0.5
print(weight_kg)

【讨论】:

  • 这也有效。问题在于右括号符号的位置。
猜你喜欢
  • 2017-06-14
  • 1970-01-01
  • 2020-07-21
  • 2021-07-14
  • 2011-09-22
  • 2021-12-12
  • 2020-02-09
  • 1970-01-01
  • 2014-05-25
相关资源
最近更新 更多