如何从for循环中创建一串ASCII字符(Python 3.3)?

时间:2015-01-29 22:51:57

标签: python string for-loop

我正在尝试编写一个程序,该程序将创建一个随机生成的八字符键(ASCII字符)。到目前为止,我已经能够获得8个不同的数字,然后将它们转换为等效的ASCII字符:

> import random
> for i in range(0,8):
>     key = random.randint(33,126)
>     key = chr(key)
>     print(key)

然而,当我运行它打印的程序时(输出至少总是不同):

> ~
> e
> E
> v
> k
> `
> (
> X

理想情况下,我希望它打印(中间没有空格):

> ~eEvk`(X

但是我已经尝试了很多方法(包括格式化)将它放入一个字符串但没有任何效果! 对于冗长的问题感到抱歉,但我希望这是有道理的。我们非常感谢一个答案。谢谢!

3 个答案:

答案 0 :(得分:2)

根据您的工作,您可以将其添加到列表中,然后在循环结束时打印列表

import random
l = []
for i in range(0,8):
   key = random.randint(33,126)
   key = chr(key)
   l.append(key)
print("".join(l)) 

答案 1 :(得分:1)

您可以这样做:

import random
print("".join(chr(random.randint(33,126)) for _ in range(8)))

或者使用字符串模块:

import random
import string
print("".join(random.choice(string.printable) for _ in range(8)))

答案 2 :(得分:0)

您有两种方法可以解决这个问题。

首先,如果您想要print()每个角色但又不想要换行符,您可以告诉它将输出保持在同一行:

import random
for i in range(0,8):
    key = random.randint(33,126)
    key = chr(key)
    print(key, end='')

另一种选择是从空字符串s = ''开始,并在制作时将每个键添加到它,然后在结尾打印整个字符串:

import random
s = ''
for i in range(0,8):
    key = random.randint(33,126)
    s += chr(key)
print(s)