发布
社区首页 >问答首页 >TypeError:'queue‘对象不可迭代

TypeError:'queue‘对象不可迭代
EN

Stack Overflow用户
提问于 2021-03-29 14:19:30
回答 3查看 3.4K关注 0票数 0

我试图在队列类中创建一个程序,下面是我的代码:

代码语言:javascript
代码运行次数:0
复制
        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是不可迭代的”)

EN

回答 3

Stack Overflow用户

发布于 2021-03-29 14:24:07

检查如何创建迭代器:https://wiki.python.org/moin/Iterator

您必须实现类没有实现的__iter__()__next__()。这就是为什么编译器告诉您'queue' object is not iterable

This answer向您展示了如何在Python中正确地实现迭代器。

票数 0
EN

Stack Overflow用户

发布于 2021-03-29 14:25:08

“Python中的Iterator只是一个可以迭代的对象,一个返回数据的对象,一次返回一个元素。

从技术上讲,Python对象必须实现两个特殊的方法,iter()和next(),统称为迭代器协议。

根据上面的文档,您的queue对象是不可迭代的,因此您应该实现上面提到的方法。

票数 0
EN

Stack Overflow用户

发布于 2021-03-29 14:27:57

如果您的类的对象应该是可迭代的,那么实现Maxouille的回答所述的内容,如果这不是必需的,您可以选择只替换

代码语言:javascript
代码运行次数:0
复制
for i in self:

使用

代码语言:javascript
代码运行次数:0
复制
for i in self.items:

在方法上count

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66855930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档