我可以获得代码审查吗?如果我可以更有效地完成此操作,则需要帮助
Can I get a code review? Need help if I could have done this more efficient
我是新来的,也是使用 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)
您可以使用循环 str.join()
:
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 次单独调用。
或如 在评论中建议的那样:
':'.join(format(choice(range(256)), 'x') for _ in range(6))
在所有 256 个 ASCII 字符中使用十六进制格式 'x'
和 format()
。
此外,为了超级安全,您可以使用 02x
/02X
:
将格式填充为 2 个字符
format(choice(range(256)), '02x') # lowercase padding
format(choice(range(256)), '02X') # uppercase padding
x
是小写十六进制,X
是大写十六进制。最好在此处保持一致以避免奇怪的小写和大写混合。这种一致性的一个例子是 MAC 地址,其中十六进制字符串只是小写。
您可以在 Format Specification Mini-Language 中阅读更多关于此及其变体的信息。
您可以做的另一件事是将 choice(range(256))
替换为 random.randrange(256)
,从而避免使用 range()
。
我是新来的,也是使用 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)
您可以使用循环 str.join()
:
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 次单独调用。
或如
':'.join(format(choice(range(256)), 'x') for _ in range(6))
在所有 256 个 ASCII 字符中使用十六进制格式 'x'
和 format()
。
此外,为了超级安全,您可以使用 02x
/02X
:
format(choice(range(256)), '02x') # lowercase padding
format(choice(range(256)), '02X') # uppercase padding
x
是小写十六进制,X
是大写十六进制。最好在此处保持一致以避免奇怪的小写和大写混合。这种一致性的一个例子是 MAC 地址,其中十六进制字符串只是小写。
您可以在 Format Specification Mini-Language 中阅读更多关于此及其变体的信息。
您可以做的另一件事是将 choice(range(256))
替换为 random.randrange(256)
,从而避免使用 range()
。