我试图在队列类中创建一个程序,下面是我的代码:
def count(self): #im having a problem with this def count
vowels=0
for i in self:
if(i=='a' or i=='e' or i=='i' or i=='o' or i=='u' or i=='A' or i=='E' or i=='I' or i=='O' or i=='U'):
vowels=vowels+1
print(vowels)
我在计算用户输入的元音时有问题。它写着“第44行(q.count())”和“第16行(在self: TypeError:'queue‘object是不可迭代的”)
发布于 2021-03-29 14:24:07
检查如何创建迭代器:https://wiki.python.org/moin/Iterator
您必须实现类没有实现的__iter__()
和__next__()
。这就是为什么编译器告诉您'queue' object is not iterable
。
This answer向您展示了如何在Python中正确地实现迭代器。
发布于 2021-03-29 14:25:08
“Python中的Iterator只是一个可以迭代的对象,一个返回数据的对象,一次返回一个元素。
从技术上讲,Python对象必须实现两个特殊的方法,iter()和next(),统称为迭代器协议。
根据上面的文档,您的queue
对象是不可迭代的,因此您应该实现上面提到的方法。
发布于 2021-03-29 14:27:57
如果您的类的对象应该是可迭代的,那么实现Maxouille的回答所述的内容,如果这不是必需的,您可以选择只替换
for i in self:
使用
for i in self.items:
在方法上count
https://stackoverflow.com/questions/66855930
复制相似问题