разъяснение ord (os.urandom (x)) - строка, символ - PullRequest
0 голосов
/ 01 декабря 2018

Следующее является функцией, которую создал мой профессор, и мы должны использовать эту функцию в нашем коде:

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

В инструкциях говорится, что нужно создать функцию create_list, вызвать rando_num в create_list и выполнить некоторые действия.чеки на возврат.Я продолжаю получать ошибки, и из любопытства я сам проверил rando_num и получил те же самые ошибки.

Если я вызываю rando_num ('5'), я получаю "объект str не может быть интерпретирован как целое число"

Если я вызываю rando_num (5), я получаю "ord () ожидаемый символ, но найдена строка длиной 5"

Если я пытаюсь rando_num ('a'), я получаю "'str'объект не может быть интерпретирован как целое число "

Я прочитал os.urandom и ord, поэтому я не понимаю, что мне нужно добавить в функцию.Я думал, что urandom возвращает строку, но тогда ошибка говорит, что ord ожидает символ.Я не могу изменить код профессора, так как в мире я могу его использовать?

1 Ответ

0 голосов
/ 01 декабря 2018

Как указано в документации Python для os.urandom , urandom возвращает "строку из n случайных байтов".И, как говорится в документации Python для ord , ord нужно "дать строку, представляющую один символ Unicode."urandom должен возвращать только один байт, который Python интерпретирует как строку с одним символом Unicode.Этот символ будет ограничен результатом ord от 0 до 255, но он будет работать.

Поэтому настройте свой код так, чтобы он всегда вызывал rando_num с аргументом 1,Вызов, который повторяется в действительности, дает последовательность случайных чисел между 0 и 255, но выполняется операционной системой, а не языком программирования (что нужно для random).Это работает в моем Python 3.7.

...