如何显示for循环中的整数和字母串

时间:2015-01-31 15:09:52

标签: python string python-3.x for-loop

我试图通过在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)

2 个答案:

答案 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='')