我试图通过在33到126之间生成8个随机数来创建一个八字符的密钥,然后将这8个数字中的每一个转换为ASCII字符。我已经能够做到这一切:
print('Eight-Character Key: ')
for i in range(0,8):
key = random.randint(33,126)
key = chr(key)
print(key,end='')
输出结果为:
Eight-Character Key:
BAU78)E)
但理想情况下,我希望所有人都在同一条线上:
Eight-Character Key: BAU78) E)
答案 0 :(得分:2)
显而易见的解决方案,因为您知道如何使用print()
函数的end
参数:
print('Eight-Character Key: ', end='')
# ^^^^^^
# no end-of-line after that
for i in range(0,8):
key = random.randint(33,126)
key = chr(key)
print(key, end='')
print()
# ^^^^^
# end of line
并采用更“pythonic”的方式:
passwd = (chr(random.randint(33,126)) for _ in range(8))
print('Eight-Character Key:', "".join(passwd))
但是请注意,无论你做什么,它都不是很安全,因为Python没有对内存的低级控制。因此,可以从内存转储中访问生成的密码(有关可能的解决方法,请参阅here)。除此之外,由于密码可能显示在控制台上,因此在所涉及的各种过程的堆中也可能存在许多密码副本。
答案 1 :(得分:0)
将end
放在第一个print
语句
print('Eight-Character Key: ',end='')
for i in range(0,8):
key = random.randint(33,126)
key = chr(key)
print(key,end='')
其他方法 - 将密钥附加到字符串然后print
k = ''
for i in range(0,8):
key = random.randint(33,126)
k += chr(key)
print('Eight-Character Key: ',k,end='')