如何使用.join和for循环创建随机hexdigit代码生成器?

时间:2013-11-08 01:03:04

标签: python string join for-loop random

我是编程新手,我必须做的一项任务是使用for循环和.join创建一个随机的hexdigit颜色代码生成器。 我的程序是否接近你的工作方式,还是完全关闭? 并且,有没有办法让随机数量的数字和字母出现在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 个答案:

答案 0 :(得分:15)

字符串可以迭代,所以我的代码看起来像这样。

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

答案 1 :(得分:9)

执行此操作的一种简洁方法是使用list comprehensions(这是某种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'

您可以使用rangemap

来缩短字母线
>>> alpha = map(str, range(10)) + ["A", "B", "C", "D", "E", "F"]

或者只是使用字符串:

>>> alpha = "ABCDEF0123456789"

PS。由于颜色是十六进制,为什么不生成随机数并将其转换为十六进制?

>>> hex(random.randint(0, 16777215))[2:].upper()
'FDFD4C'

答案 2 :(得分:-1)

import random
keylist='0123456789ABCDEF'
password=[]
length=15

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

print(''.join(password))