【问题标题】:Replace iterated output with custom print statement用自定义打印语句替换迭代输出
【发布时间】:2014-08-19 05:59:36
【问题描述】:
def the(x):
    i = 0
    while i < 6:
        i += x
        print "i equals %s" % i
        if i == 5:
            print "This replaces the 5th iteration"

我有一个循环,将 i 递增 1,在 i

我想删除第 5 次迭代(“i 等于 5”)并将其替换为字符串:“This replaces the 5th iteration”。

我有什么选择?

【问题讨论】:

  • 阅读if 语句的完整语法,特别是else 部分。
  • 天哪,我可以停止被否决吗?这怎么可能是重复的,没有提到装饰器这个词?我什至不知道装饰器是什么
  • 显然不是重复的;投票赞成的人显然犯了一个错误。不过没关系,因为在关闭之前需要更多选票,而且不太可能获得这些选票。至于为什么它被否决,我猜测可能只是因为这个问题太基本了(我个人认为这个问题对于这个网站来说非常好)。
  • 对初学者有点敌意。该网站应该有一个初学者标签,为回答的人提供代表+特殊教师徽章。
  • 是的,这个网站有时对初学者有点苛刻。我不能说我喜欢那样。

标签: python loops while-loop iteration


【解决方案1】:

使用else 语句在打印之前检查条件。在检查它是否是第 5 个之前,您已经打印了第 5 个。 (我为打印添加了括号,因为我使用的是 Python 3,应该仍然可以在 Python 2 中使用)

def the(x):
    i = 0
    while i < 6:
        i += x
        if i == 5:
            print("This replaces the 5th iteration")
        else:
            print("i equals %s" % i)

>>> the(1)
i equals 1
i equals 2
i equals 3
i equals 4
This replaces the 5th iteration
i equals 6

【讨论】:

  • 谢谢 Jose,但它怎么知道按该顺序插入和替换第 5 条语句?
  • @ZaneTribal 它正在经历一个循环,每次都将 x 添加到 i。所以很自然,下一次迭代将是 (current i) + x。然后下一个将再次添加 x。我建议阅读 Python 的迭代和控制结构,以了解细节。
  • 什么意思?因为您正在迭代 1,并且每次迭代都会将 1 添加到 i,我们可以得出结论,第 5 次迭代将具有 i 的值 5。所以我们插入 if i == 5 语句来检查 i 的时间,因此迭代在 5 上。当它不在 5 上时,它会跳过 if 语句,因为条件不正确,并执行 else 代码块(打印 i = 不管)。
  • @ZaneTribal 没问题。请务必单击该复选标记以接受答案!我们都会得到代表 ;)
猜你喜欢
  • 1970-01-01
  • 2019-06-16
  • 2020-02-03
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
相关资源
最近更新 更多