Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我得到TypeError:需要一个整数?_Python - Fatal编程技术网

Python 为什么我得到TypeError:需要一个整数?

Python 为什么我得到TypeError:需要一个整数?,python,Python,这是我的代码片段,其中回溯调用显示错误: def categorize(title): with conn: cur= conn.cursor() title_str= str(title) title_words= re.split('; |, |\*|\n',title_str) key_list= list(dictionary.keys()) flag2= 1 for word in title_words:

这是我的代码片段,其中回溯调用显示错误:

def categorize(title):
   with conn:
      cur= conn.cursor()
      title_str= str(title)
      title_words= re.split('; |, |\*|\n',title_str)
      key_list= list(dictionary.keys())
      flag2= 1
      for word in title_words:
         title_letters= list(word)
         flag1= 1
         for key in key_list:
           if key==title_letters[0]:
              flag1= 0
              break

      if flag1== 0:

        start=dictionary.get(title_letters[0])
        end= next_val(title_letters[0])

        for i in xrange (start,end):
           if word==transfer_bag_of_words[i]:
              flag2= 0
              break

      if flag2== 0:
         cur.execute("select Id from articles where title=title")
         row_id= cur.fetchone()
         value= (row_id,'1')
         s= str(value)
         f.write(s)
         f.write("\n")
         break

  return


def next_val(text):
   for i,v in enumerate(keyList):
      if text=='t':
         return len(transfer_bag_of_words)
      elif v==text:
         return dictionary[keyList[i+1]]
这是回溯呼叫:

Traceback (most recent call last):
File "categorize_words.py", line 93, in <module>
 query_database()
File "categorize_words.py", line 45, in query_database
 categorize(row)
File "categorize_words.py", line 67, in categorize
 for i in xrange (start,end):
TypeError: an integer is required

这是数据库文件的可下载链接

map_letter_to_pos试图修改全局变量keyList,但没有将其指定为全局变量,因此它只修改keyList的本地副本,然后丢弃它。这会导致next_val无需迭代,因此它永远不会到达if elif,并返回None

end = None
range(start,end) # None is not an int

这需要一个新的解决方案。如果这两个变量的类型真的是int,这就不是问题了。@joelgoldstick,我不明白。我已经提供了给出错误的代码部分
start
和/或
end
不是整数。我知道你说你检查过了,但是你错了。@MorganThrapp的意思是如果我们不能在我们的机器上运行代码来测试并得到与你相同的错误。
bag\u of_words
定义在哪里?你用了两次,但我看不出你在哪里把它传递到这两个函数中?也被破坏了。当您从未查看时,您非常确定开始和结束是int,错误消息清楚地告诉您它们不是。:)
end = None
range(start,end) # None is not an int