Как бы я сделал генератор случайного шестнадцатеричного кода, используя.join и для циклов?

Я новичок в программировании, и мне нужно сделать одно задание - создать генератор случайного шестнадцатеричного цветового кода, использующий циклы и.join. Моя программа ниже даже близко к тому, как вы это делаете, или она полностью отключена? И есть ли способ заставить случайное количество цифр и букв появляться в пределах 6?

import random
str = ("A","B","C","D","E","F","G","H")

seq = ("1","2","3","4","5","6", "7","8","9")

print '#',
for i in range(0,3):

    letter = random.choice(str)
    num = random.choice(seq)
    print num.join(letter),
    print letter.join(num)

3 ответа

Строки можно перебирать, поэтому мой код будет выглядеть следующим образом.

import random

def gen_hex_colour_code():
   return ''.join([random.choice('0123456789ABCDEF') for x in range(6)])

if __name__ == '__main__':
    print gen_hex_colour_code()

результаты в

In [8]: 9F04A4

In [9]: C9B520

In [10]: DAF3E3

In [11]: 00A9C5 

Затем вы можете поместить это в отдельный файл, называемый, например, myutilities.py

Затем в вашем основном файле Python вы бы использовали его так:

import myutilities

print myutilities.gen_hex_colour_code()

if __name__ == '__main__': часть будет выполнена, только если вы запустите файл myutilities.py напрямую. Он не будет выполняться, когда вы импортируете его из другого файла. Это обычно, где функции тестирования идут.

Также обратите внимание, что это использует синтаксис для Python 2.7. В Python 3.0 одним из основных отличий является то, что print - это функция, и вам придется использовать print(gen_hex_colour_code()). Смотрите http://docs.python.org/3.0/whatsnew/3.0.html для получения дополнительной информации о том, как все обстоит иначе, если вы запутались.

Почему я все еще использую Python 2.7? Многие научные модули Python все еще используют вариант 2.7, но для новичка в Python я бы предложил вам придерживаться версии 3.0

Одним из компактных способов сделать это является использование списочных представлений (которые являются определенным видом цикла for):

>>> alpha = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
             "A", "B", "C", "D", "E", "F")
>>> ''.join([random.choice(alpha) for _ in range(6)])
'4CFDE4'

Вы можете сократить строку алфавита, используя range а также map:

>>> alpha = map(str, range(10)) + ["A", "B", "C", "D", "E", "F"]

Или просто используйте строку:

>>> alpha = "ABCDEF0123456789"

PS. Поскольку цвета шестнадцатеричные, почему бы просто не сгенерировать случайное число и не превратить его в шестнадцатеричное?

>>> hex(random.randint(0, 16777215))[2:].upper()
'FDFD4C'
import random
keylist='0123456789ABCDEF'
password=[]
length=15

while len(password) < length:
    a_char = random.choice(keylist)
    password.append(a_char)

print(''.join(password))
Другие вопросы по тегам