【问题标题】:Error with "len() of unsized object"“未调整大小的对象的 len()”错误
【发布时间】:2015-02-18 17:21:36
【问题描述】:

这是我的代码:

TestV = int(input("Data: "))
print TestV
print len (TestV)

事实上,它打印了TestV,但是当我尝试获取它的长度时,它给了我错误"len() of unsized object"

我尝试了一些更简单的方法,例如

>>> x = "hola"
>>> print len(x)
4

而且效果很好。谁能向我解释我做错了什么?

【问题讨论】:

  • 期望整数的长度是多少?!
  • 错误信息说明了一切:你做错的是试图获取一个未调整大小的对象的长度。

标签: python


【解决方案1】:

如果要计算位数,则需要将其转换回字符串(请注意,减号 (-) 也将计为 1): p>

len(str(TestV))

或者只是等待将其转换为 int:

TestV = input("Data: ")
print len (TestV)
TestV = int(TestV)

但请注意,与后一种情况相比,它也会计算尾随空格等。

编辑:根据您的评论。

原因是包含其他字符的字符串很可能不是数字,而是过程中的错误。如果您想过滤掉数字,可以使用正则表达式:

import re

x = input("Data: ")
x = re.sub("\D", "", x)
xv = int(x)

【讨论】:

  • 谢谢!这样可行。但现在我有另一个问题。如果它假设我正在使用字符串,为什么它不能识别混合的数字和字符?像“ac4ft6”
【解决方案2】:

类型 int 没有长度。

您基本上是将任何输入转换为 int 类型,在
TestV = int(input("Data: "))

【讨论】:

  • 感谢您的解释^^ 但现在我有另一个问题。如果它假设我正在使用字符串,为什么它不能识别混合的数字和字符?像“ac4ft6”
猜你喜欢
  • 1970-01-01
  • 2014-06-14
  • 2020-08-10
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多