Python 迭代

3 投票
6 回答
3026 浏览
提问于 2025-04-15 23:33

我正在尝试写一个简单的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")

撰写回答