我在互联网上找到了此代码,但是我无法理解打印声明的工作方式。
我已经尝试看到很多答案,但是没有一个答案能完美回答。
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()
答案 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位数字表示。