ord(os.urandom(x))澄清-字符串,字符

时间:2018-12-01 18:29:41

标签: python ord

以下是我的教授制作的函数,我们将在代码中使用此函数:

    import os
    def rando_num(num_bytes):
        return ord(os.urandom(num_bytes))

指令说要创建一个create_list函数,在create_list中调用rando_num,并对返回值进行一些检查。我不断收到错误消息,出于好奇,我自己测试了rando_num并得到了相同的错误消息。

如果我打电话     rando_num('5') 我收到“'str'对象无法解释为整数”

如果我打电话     rando_num(5) 我收到“ ord()期望有字符,但找到长度为5的字符串”

如果我尝试     rando_num('a')我得到“无法将'str'对象解释为整数”

我阅读了os.urandom和ord,所以对于需要在函数中添加的内容感到困惑。我以为urandom返回一个字符串,但是错误提示ord需要一个字符。我无法更改教授的密码,那么我该如何使用它?

1 个答案:

答案 0 :(得分:0)

正如Python's documentation for os.urandom所说,urandom返回“ n个随机字节的字符串”。正如Python's documentation for ord所说,ord必须“给出一个代表一个Unicode字符的字符串。”

在不修改教授代码的情况下,我能看到的唯一解决办法是让urandom仅返回一个字节,Python将其解释为具有一个Unicode字符的字符串。该字符将被限制为具有ord0的{​​{1}}结果,但是它将起作用。

因此,将您的代码设置为始终使用参数255调用rando_num。反复调用实际上会在10之间产生一个随机数序列,但是由操作系统而不是由编程语言来完成(想要255会做到)。这确实适用于我的Python 3.7。