【问题标题】:Is there a way to get increment counter from a Python 'for' loop with decrement range?有没有办法从具有递减范围的 Python 'for' 循环中获取递增计数器?
【发布时间】:2020-05-16 15:07:15
【问题描述】:

我读到每个人都使用枚举,但我认为我不知道如何在我的代码中使用它。我想根据字母顺序打印字符串中字母的值,下一个字符将值增加 1,我想从字符串中的最后一个字符开始。

我可以解决代码,但是如何在不使用 i = i+1 的情况下替换计数器 i 以使这段代码更短一些?有没有办法在 for 循环中实现某些东西?

这是我的代码:

    def project(r):
       i = 0
       for char in range(len(r),0,-1):
          print(ord(r[char-1])-96+i)
          i=i+1

    project(str(input()).lower())

例如,如果我插入一个字符串如"sad",则输出将是[4,2,21],因为d = 4, a = 1, s = 19

有没有办法在不初始化i的情况下实现计数器?

【问题讨论】:

    标签: python-3.x for-loop


    【解决方案1】:

    根据您的问题,我可以理解的是您想使用 enumerate 来获得结果。

    您可以简单地执行以下操作:

    def project(r):
        for (i, char) in enumerate(r, 0):
            print(ord(r[-i-1])-96+i)
    
    project(str(input()).lower())
    

    并且 enumerate() 方法给一个可迭代对象添加了一个计数器,并以枚举对象的形式返回。

    语法:enumerate(iterable, start)

    这里0是start的默认值,你可以根据自己的需求给定。例如,如果您希望您的计数器从100 开始,那么您可以像enumerate(iterable, 100) 一样。

    在上面的代码中,我使用了 enumerate() 函数并从 0 初始化了计数器,并且你想从最后一个开始显示,我使用-ve 索引来获取列表中的最后一项。

    当我初始化计数器 0 时,我怎样才能从最后一个获取项目?为此,我将索引减去-1,如r[-i-1]。因此,对于第一次迭代,i 值变为0,因此r[-i-1] 变为r[-0-1],即r[-1],而在第二次迭代中,i 变为1,因此r[-i-1] becomes r[-1 -1]which isr[-2]` 结果倒数第二项。同样,它继续。

    有关枚举的更多信息,请查看以下链接,以便您了解清楚。

    1. Python enumerate()
    2. 13. Enumerate

    【讨论】:

      【解决方案2】:

      Dcoder14,实际上我想让我的代码更短一点。甚至还有除枚举以外的其他方法,但还是非常感谢...我使用了您的代码,但我稍微编辑了一下,使其缩短了一行...

      这是我的代码:

          def project(r):
              for (i, char) in enumerate(r, 0):
                  print(str(ord(r[-i-1])-96+i))
          project(str(input()).lower())
      

      【讨论】:

        【解决方案3】:

        如果你想让它更短,你可以使用递减 char 值,因为我们可以通过在 for 循环中用 char 减去字符串(输入)的长度来获得增量。 p>

        例如,这是我的代码:

            def project(r):
                for char in range(len(r),0,-1):
                    print(ord(r[char-1])-96+(len(r)-char))
            project(str(input()).lower())
        

        【讨论】:

        • @anas ty 回答你的坏话
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-21
        • 2014-02-03
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        相关资源
        最近更新 更多