我是编程新手,我必须做的一项任务是使用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)
答案 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'
您可以使用range
和map
:
>>> 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))