如何从 for 循环(Python 3.3)制作一串 ASCII 字符



我正在尝试编写一个程序,该程序将创建一个随机生成的八个字符的密钥(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

但是我已经尝试了很多方法(包括格式)将其放入字符串中,但没有任何效果!很抱歉这个冗长的问题,但我希望它是有意义的。尽快回答将不胜感激。谢谢!

按照您所做的操作,您可以将其添加到列表中,然后在循环结束时打印列表

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

您有几个选项来处理这个问题。

首先,如果你想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)

你可以做这样的事情:

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)))

最新更新