我能拿到代码审查吗?如果我能做得更有效的话需要帮助吗

2024-04-29 07:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的,对python编程也不熟悉。我最近开始了一个在线粗集,想看看是否有一个更简单的方法,我可以创建一个12位随机十六进制列表。我希望每个位都是随机数或字母,可以是小写或大写。根据我的新手研究,这是我能找到的最好的,并且创建了我自己的代码。。所以我能做得更简单更有效吗?你知道吗

#!/user/bin/python
import string
import random 

r1 = random.choice(string.hexdigits)
r2 = random.choice(string.hexdigits) 
r3 = random.choice(string.hexdigits)  
r4 = random.choice(string.hexdigits) 
r5 = random.choice(string.hexdigits)
r6 = random.choice(string.hexdigits)
r7 = random.choice(string.hexdigits)
r8 = random.choice(string.hexdigits)
r9 = random.choice(string.hexdigits)
r10 = random.choice(string.hexdigits)
r11 = random.choice(string.hexdigits)
r12 = random.choice(string.hexdigits)

randnumb = r1+r2+":"+r3+r4+":"+r5+r6+":"+r7+r8+":"+r9+r10+":"+r11+r12

print(randnumb)

Tags: importstringrandomr2r3r5choicer8
1条回答
网友
1楼 · 发布于 2024-04-29 07:33:41

可以将循环与^{}一起使用:

from random import choice
from string import hexdigits

print(":".join(choice(hexdigits) + choice(hexdigits) for _ in range(6)))
# 47:8b:FA:71:90:ea

它将两个随机的十六进制数字组合6次,相当于12个单独的调用。你知道吗

或者正如@Jon Clements在评论中建议的那样:

':'.join(format(choice(range(256)), 'x') for _ in range(6))

它使用十六进制格式'x'^{}跨所有256个ASCII字符。你知道吗

此外,为了超级安全,您可以使用02x/02X将格式填充为2个字符:

format(choice(range(256)), '02x') # lowercase padding
format(choice(range(256)), '02X') # uppercase padding

x是小写十六进制,X是大写十六进制。最好在这里保持一致,以避免奇怪的小写和大写混合。这种一致性的一个例子是MAC地址,其中十六进制字符串仅为小写。你知道吗

您可以在Format Specification Mini-Language中阅读更多关于它及其变体的信息。你知道吗

您可以做的另一件事是用random.randrange(256)替换choice(range(256)),避免使用range()。你知道吗

相关问题 更多 >