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
一种简洁的方法是使用列表推导(这是一种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)
| 归档时间: |
|
| 查看次数: |
11002 次 |
| 最近记录: |