【问题标题】:Gray rank algorithm implementation in pythonpython中的灰度等级算法实现
【发布时间】:2014-04-05 07:48:45
【问题描述】:

如何在python中实现以下算法:

(source)

def getGraycodeRank(n, t):
    r = 0#range
    b = 0
    for i in reversed(range(0, n)):
        if n - i IS IN t: #how to check it?
            b = 1-b
        if b == 1:
            r += 2^i
    return r

【问题讨论】:

    标签: python algorithm gray-code


    【解决方案1】:

    假设tdictlist

    if (n - i) in t:
    

    这应该可以...

    【讨论】:

      【解决方案2】:

      您可以使用 in 运算符:

      if (n - i) in t:
      

      或者干脆

      if n - i in t:
      

      另外,运营商^ 并没有按照你的想法做。要获得数字的幂,请使用**

      r += 2**i
      

      注意:

      • in 运算符可用于元组、列表、字典、字符串。

      编辑:

      由于t 是字符串,要检查t 是否包含整数(n - i),您必须将整数n - i 转换为字符串:

      if str(n - i) in `t`:
          # ...
      

      【讨论】:

      • 假设tdictlist
      • 当我尝试运行时: print getGraycodeRank(4, "101") 我得到: if (n - i) in t: #how to check it? TypeError: 'in ' 需要字符串作为左操作数,而不是 int
      • @Fos nt 的类型是什么?
      • @Fos 您必须将整数 4 转换为 字符串n = str(n)
      • 我不明白。现在我得到错误:for i in reversed(range(0, n)): TypeError: range() integer end argument expected, got str.
      猜你喜欢
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多