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

Use*_*222 7 python string random for-loop join

我是编程新手,我必须做的一项任务是使用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)
Run Code Online (Sandbox Code Playgroud)

Wil*_*man 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()
Run Code Online (Sandbox Code Playgroud)

结果是

In [8]: 9F04A4

In [9]: C9B520

In [10]: DAF3E3

In [11]: 00A9C5 
Run Code Online (Sandbox Code Playgroud)

然后你可以将它放在一个单独的文件中,例如, myutilities.py

然后在你的主python文件中,你会像这样使用它:

import myutilities

print myutilities.gen_hex_colour_code()
Run Code Online (Sandbox Code Playgroud)

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


mik*_*iku 9

一种简洁的方法是使用列表推导(这是一种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'
Run Code Online (Sandbox Code Playgroud)

您可以使用range和缩短字母线map:

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

或者只是使用一个字符串:

>>> alpha = "ABCDEF0123456789"
Run Code Online (Sandbox Code Playgroud)

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

>>> hex(random.randint(0, 16777215))[2:].upper()
'FDFD4C'
Run Code Online (Sandbox Code Playgroud)