【问题标题】:why python len() command for "-1" is 2?为什么“-1”的python len()命令是2?
【发布时间】:2019-03-04 16:49:28
【问题描述】:

对于任何负数,它也将“-”视为一个字符,即使它是该数字的一部分。 我尝试先将我的数字设为字符串,但它不会改变结果,它总是给所涉及的实际字符数量 +1。

代码:

def cube(num):
    return str(num*num*num)
kappa=(cube(-5))
if len(kappa)<4:
    print(kappa)
elif len(kappa)>=4 and len(kappa)>=0:
    print(kappa + "   ,your number is bigger than 999")

结果:

-125,你的号码大于999

【问题讨论】:

  • 你正在取一个字符串的长度......
  • 另外,似乎是一种反模式,通过使用字符串长度来确定大于 999 的数字。为什么不取绝对值,然后只比较整数?

标签: python string-length negative-number


【解决方案1】:

因为你取的是字符串的长度,所以保留了减号;这是合乎逻辑的事情,我们为什么要删除它?如果您对位数感兴趣,只需在计算字符数之前删除减号即可:

n = '-125'
len(str(abs(int(n))))
=> 3

【讨论】:

  • 谢谢,对不起,如果我的代码看起来很愚蠢或简单,我才刚刚开始。我不知道 abs()
【解决方案2】:

len 正在检查字符串"-2" 的长度,该字符串有两个字符。

【讨论】:

    【解决方案3】:

    一旦你给一个整数加上引号,比如-2,它就不再是一个整数了。它变成了字符串字面量,因此-2 被视为字符,就像'a'、'b' 等。

    要获取绝对整数值,请执行以下操作:

    abs(int(kappa))
    

    【讨论】:

      【解决方案4】:

      我不知道你是什么意思。但这里是简单的比较程序。

      def cube(num):
          return str(num*num*num)
      
      kappa=int(cube(-5))
      
      if kappa<4:
          print(kappa)
      elif kappa>=4:
          print(kappa + " ,your number is bigger than 4")
      

      【讨论】:

        猜你喜欢
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 2014-11-10
        • 2017-07-01
        相关资源
        最近更新 更多