有人可以在此代码中向我解释打印语句吗?

时间:2019-08-17 10:37:35

标签: python-3.x data-structures gray-code

我在互联网上找到了此代码,但是我无法理解打印声明的工作方式。

我已经尝试看到很多答案,但是没有一个答案能完美回答。

def main():
    n=int(raw_input())
    for i in range(0, 1<<n):
        gray=i^(i>>1)
        print "{0:0{1}b}".format(gray,n),

main()

2 个答案:

答案 0 :(得分:0)

高级字符串格式 的概念可让您了解正在查看的内容。具体来说, PEP 3101 Advanced string Formatting

出于理解目的,您可以参考official documentation

答案 1 :(得分:0)

ERROR: Command errored out with exit status 1: command: 'c:\users\shrinath\anaconda3\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Shrinath\\AppData\\Local\\Temp\\pip-install-3_oopeoz\\Shapely\\setup.py'"'"'; __file__='"'"'C:\\Users\\Shrinath\\AppData\\Local\\Temp\\pip-install-3_oopeoz\\Shapely\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info cwd: C:\Users\Shrinath\AppData\Local\Temp\pip-install-3_oopeoz\Shapely\ Complete output (9 lines): Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\Shrinath\AppData\Local\Temp\pip-install-3_oopeoz\Shapely\setup.py", line 80, in <module> from shapely._buildcfg import geos_version_string, geos_version, \ File "C:\Users\Shrinath\AppData\Local\Temp\pip-install-3_oopeoz\Shapely\shapely\_buildcfg.py", line 200, in <module> lgeos = CDLL("geos_c.dll") File "c:\users\shrinath\anaconda3\lib\ctypes\__init__.py", line 356, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] The specified module could not be found ----------------------------------------
在这里,for i in range(0, 1<<n):向左移动1 n位。意思是
1 << n [2 =二进制10]
等等。
对于十进制数,答案等于2的幂n。
对于二进制'n',将添加零个数字。
因此范围是if n = 1, 1 << 1 would be 10, n = 2, 1 << 10 would be 100

for i in range(0, 2 ** n)

此处gray=i^(i>>1) 将i向右移动1位。这意味着:

i>>1

等等。
对于十进制数字,它等于除以2(并忽略。小数点后的数字)。
对于二进制,最后一位被删除。

if i = 1, 1 >> 1 would be 0, i = 2, 10 >> 1 would be 1 [2 = binary 10] i = 3, 100 >> 1 would be 10 (in binary) 2 in decimal 是异或运算符。定义为:

^
0 ^ 0 = 0,     
0 ^ 1 = 1 ^ 0 = 1,   
1 ^ 1 = 0  

这里{1}表示n,b表示二进制。因此,灰度将转换为二进制并以n位数字表示。