Python 迭代
我正在尝试写一个简单的Python脚本,目的是打印出十六进制的值,并且让这个值逐渐增加,像这样:
char = 0
char2 = 0
def doublehex():
global char,char2
for x in range(255):
char = char + 1
a = str(chr(char)).encode("hex")
for p in range(255):
char2 = char2 + 1
b = str(chr(char2)).encode("hex")
c = a+" "+b
print "testing with:%s"%(c)
doublehex()
输出结果是:
testing with:01 01
testing with:01 02
testing with:01 03
[snip]
testing with:01 fd
testing with:01 fe
testing with:01 ff
Traceback (most recent call last):
File "test2.py", line 16, in doublehex
b = str(chr(char2)).encode("hex")
ValueError: chr() arg not in range(256)
其实我想做的是:
01 01
01 02
[snip]
01 ff
02 01
02 02
一直这样增加,直到 ff ff
。我的脚本哪里出问题了?
另外,我好像也不能尝试:
00 01
00 02
我不知道为什么。
6 个回答
1
这段话的意思是,这里有一个可以用一行代码实现的功能(不包括导入的部分):
import itertools
hexs = itertools.product(*([[chr(x).encode("hex") for x in range(256)]] * 2))
6
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按预期工作。这种情况可能让人感到困惑,因为我们可能不知道问题出在哪里。
通常,解决这类问题的第一步是检查我们使用的代码是否正确。我们需要仔细看看代码中每一行,确保没有拼写错误或者逻辑上的问题。有时候,问题可能出在我们对这个库的理解上,或者我们没有按照它的要求来使用它。
另外,查看文档也是一个很好的办法。文档就像是这个库的说明书,里面会告诉我们如何正确使用它的功能。如果文档中有示例代码,我们可以对照着自己的代码来检查,看看是否有不一样的地方。
如果自己还是找不到问题,可以考虑去一些编程社区求助,比如StackOverflow。在那里,有很多经验丰富的程序员会乐意帮助你解决问题。记得在提问的时候,把你的代码和遇到的问题描述清楚,这样别人才能更好地理解你的情况。
总之,遇到问题时不要着急,慢慢检查代码,参考文档,必要时寻求帮助,通常都能找到解决办法。
for x in xrange(256):
for y in xrange(256):
print '%02x %02x' % (x, y)
4
你需要在之前把 char2 = 0
设定好
for p in range(255):
其实,你不需要用到计数器 - char 和 char2
下面的代码可以从 0 一直运行到 ff
for x in range(256):
for p in range(256):
print chr(x).encode("hex"),chr(p).encode("hex")