(帮助)TypeError:' str' object不能解释为整数

时间:2016-11-06 03:06:32

标签: python python-3.x

if( isset($_POST["submit"]) && !empty($_POST["submit"]) ){

      if(inserted)
           die("Database insertion successful"); //PHP will stop here
      else
           die("Database insertion failed"); //or here

}

  //Your HTML won't be shown ...

我想使用值索引引用,但我该怎么做?

1 个答案:

答案 0 :(得分:1)

从你的错误看,似乎'index'变量是一个字符串,而不是一个int。你可以使用int()转换它。

index = int(index)
for i in range(string[index:]):   

现在,string [index:]也将是一个字符串。所以你也需要转换它:

>>> string = "5"
>>> range(string)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: range() integer end argument expected, got str.
>>> range(int(string))
[0, 1, 2, 3, 4]
>>>

假设string [index:]只包含一个数字。如果情况并非总是如此,您可以执行以下操作:

# 'index' contains only numbers
index = int(index)
number = string[index:]
if number.isdigit():
    number = int(number)
    for i in range(number):   

来自the Wikipedia article on Python

  

Python使用duck typing并且有类型对象但是无类型的变量名。在编译时不检查类型约束;相反,对象上的操作可能会失败,表示给定的对象不是合适的类型。尽管是动态类型的,但Python是强类型的,禁止未明确定义的操作(例如,向字符串添加数字),而不是默默地尝试理解它们。

在这种情况下,您尝试将字符串传递给range()。此函数等待一个数字(正整数,因为它)。这就是你需要将你的字符串转换为int的原因。根据您的需要,您实际上可以进行更多检查。 Python关心类型。

HTH,