7

我是编程新手,我必须做的一项任务是使用 for 循环和 .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)
4

3 回答 3

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()

只有当您直接运行 myutilities.py 文件时,该if __name__ == '__main__':部分才会被执行。当您从另一个文件导入它时,它不会执行。这通常是测试功能的地方。

另外,请注意,这是使用 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

于 2013-11-08T01:22:03.137 回答
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'

您可以使用rangeand缩短字母行map

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

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

>>> alpha = "ABCDEF0123456789"

PS。既然颜色是十六进制的,为什么不直接生成一个随机数并将其转换为十六进制呢?

>>> hex(random.randint(0, 16777215))[2:].upper()
'FDFD4C'
于 2013-11-08T01:07:31.807 回答
-1
import random
keylist='0123456789ABCDEF'
password=[]
length=15

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

print(''.join(password))
于 2016-08-25T17:54:50.747 回答