difflib,类型错误 int 对象不可迭代

Posted

技术标签:

【中文标题】difflib,类型错误 int 对象不可迭代【英文标题】:difflib, type error int object is not iterable 【发布时间】:2021-03-02 05:46:05 【问题描述】:

Link to the code

import random
import difflib
number = int(input("How many words do you want to practise?"))
words = [*3000 word array*]

for x in range(0, number):
    text_1 = random.randint(0, 3000)
    z = words[text_1]
    print(z)
    text_2 = str(input("Type:"))
    seq = difflib.SequenceMatcher(isjunk=None, a=text_1, b=text_2)
    difference = seq.quick_ratio()
    difference = round(difference, 1)
    print(str(difference) + "% Match")

 print("Thank you!")

我不断收到的错误消息:(第 12 行)

对于 self.a 中的 elt: TypeError: 'int' 对象不可迭代

我在这个程序中一直很顺利,但我已经到达了这堵墙,并尝试了很多不同的方法来解决这个问题,但真的做不到。该程序旨在成为打字测试/练习的东西。我希望这里的任何人都可以帮助我找出错误消息的解决方案,或者总体而言,任何建议都会很棒。

注意: 我对这个网站很陌生,所以如果我使用的任何“格式”有误,我深表歉意。

【问题讨论】:

代码必须在您的问题中作为文本发布,而不是作为外部链接或图像,或在 cmets 中。无论如何,从它的外观来看,您正在尝试使用 SequenceMatcher 将用户输入的字符串与随机生成的整数进行比较。你的意思是比较随机整数的字符串表示 欢迎来到 SO!你能举一个你输入的文本的例子吗? 刚刚添加,对不起,我是这个网站的新手 @RandomDavis 代码中没有任何整数,想法是生成随机文本并输入该文本,然后比较两个字符串。 (打字测试/打字练习) @Atassi 你这么说,但text_1 是一个整数。你的意思是通过z 而不是text_1,比如a=z 【参考方案1】:

我查看了difflib.SequenceMatcher 文档,似乎ab 需要是序列。你给它一个int (text_1)。如果你认为你的意思是

seq = difflib.SequenceMatcher(isjunk=None, a=z, b=text_2)

注意:您应该使用 random.choice 从列表中选择一个随机项目,例如 z = random.choice(words) 这样您就不需要 text_1

【讨论】:

以上是关于difflib,类型错误 int 对象不可迭代的主要内容,如果未能解决你的问题,请参考以下文章

错误:int 对象不可迭代,如何解决?

TypeError:'int'对象不可迭代 - Python

TypeError:'int'对象在odoo中不可迭代

TypeError:'int'对象不可迭代,使用 Python 3 [关闭]

类型错误:类对象不可迭代[重复]

导致 TypeError 的 Lambda 函数:“int”对象不可迭代