【问题标题】:how to print a string in python 1000 time? [closed]如何在 python 1000 次中打印一个字符串? [关闭]
【发布时间】:2019-11-21 13:18:34
【问题描述】:

我是 python 新手,遇到了一个有趣的问题:

实现一个生成器循环,这样如果我们分配

y = cycle()

然后重复调用

next(y)

返回值

food

pizza

hungry

food

pizza

hungry

在无限循环中。如果它无法管理无限循环,则执行 1000 次循环然后停止。

不允许使用循环我可以使用称为流(无限列表)的东西。

我该怎么做?

【问题讨论】:

  • @hansolo 你能把它显示为答案并使用 def 吗?这将是可以理解的
  • Implement a generator - 这是你的答案。阅读有关生成器和 yield 关键字的信息。
  • 欢迎来到 Stack Overflow!谢谢你的问题。如果您详细说明您为尝试找到解决方案所采取的步骤,您更有可能得到回复。请参阅 Stack Overflow 问题指南:stackoverflow.com/help/how-to-ask
  • @TASO 您能否停止删除所有问题和上下文?它大大降低了可读性和可理解性
  • @LukasThaler 似乎 OP 昨天用另一个问题做到了这一点 - 后来因为“不清楚”而被搁置......

标签: python python-3.x


【解决方案1】:

实现一个生成器cycle

你知道什么是发电机吗?如果没有,请阅读生成器和 yield 关键字。

快速回答:

def cycle():
    my_list = ["food", "pizza", "hungry"]
    while True:
        yield from my_list

输出:

>>> y = cycle()
>>> next(y)
'food'
>>> next(y)
'pizza'
>>> next(y)
'hungry'
>>> next(y)
'food' 

【讨论】:

  • 但我想打印 20 次,我怎样才能做到这一点?
  • @h4ze 从列表中产生的巧妙方法。今天学到了一些新东西
  • @LukasThaler yield from 从 3.3 开始就在 Python 中。您可以将它与任何可迭代的对象一起使用,而不仅仅是列表。 :) 这包括其他生成器!
  • @h4z3 你如何让它打印 20 次?
  • @TASO 你想要一台发电机。一个无限的生成器。这就是为什么我说你应该阅读什么是生成器以及如何使用它。生成器是懒惰地评估可迭代的。如果你想要 20,你可以做例如for i in range(20): print(next(y)) - 就像您从 laaaarge 列表中获取 20 个元素一样。
【解决方案2】:

诀窍是将三个yield 语句包装成一个无限循环。这样,它们将无限循环

def cycle():
    while True:
        yield 'food'
        yield 'pizza'
        yield 'hungry'

要打印前 1000 次迭代,请使用

y = cycle()
for i in range(1000):
    print(next(y))

【讨论】:

  • 你能显示为代码吗?
  • 那怎么测试呢?
  • 会打印 1000 次吗?
  • 这不是练习要求你做的。您应该实现一个生成器y = cycle(),它在调用next(y) 时产生单词。因此,我将实现和调用分成不同的块
  • 如果用户不提供自己的代码,请不要为用户编写代码。我们不是来为人们做家庭作业(或工作)的。我们是来帮助他们学习的,而提供盲目复制和粘贴的代码对此无济于事。
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多