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
文档,似乎a
和b
需要是序列。你给它一个int
(text_1
)。如果你认为你的意思是
seq = difflib.SequenceMatcher(isjunk=None, a=z, b=text_2)
注意:您应该使用 random.choice 从列表中选择一个随机项目,例如 z = random.choice(words)
这样您就不需要 text_1
【讨论】:
以上是关于difflib,类型错误 int 对象不可迭代的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:'int'对象不可迭代 - Python