嗨,我一周前开始学习python。我正在尝试创建一个字典来替换字符。例如(dictionary["a"] = "%"
)。
我首先从ASCII 033 to 126
创建了一个包含所有字符顺序的列表。然后我尝试创建一个随机字符列表,以匹配第一个列表中的字符。但它处于无限循环中。这需要很长时间,还是我的代码?
以下是代码:
def replacement():
s=0
while s in range(93):
rep.append(chr(randint(33,126)))
if(letters[s] != rep[s]):
k=0
for replace in rep:
if replace == rep[s]:
k+=1
if(k<2):
s+=1
print(rep)
letters = []
rep = []
i=33
while i <= 126:
letters.append(chr(i))
i+=1
replacement()
答案 0 :(得分:3)
如果你想以随机顺序用chr(33)到chr(126)填充一个列表,一个更好的方法是使用random.shuffle()
from random import shuffle
letters = [chr(x) for x in range(33, 127)]
shuffle(letters)
这三行可以取代您在问题中发布的所有内容。正如我所理解的那样,这是一种更快,更容易理解的完成任务的方式。
答案 1 :(得分:2)
while s in range(93):
没有按照您的想法行事。它检查s
是否在0..92范围内并且只要该条件为真就循环;由于s
永远不会从初始值0更改其值,因此这种情况永远不会变为错误。
要迭代范围0..92,您应该使用:
for s in range(93):
您的其他while循环也应该重写为:
for i in range(33,127):
letters.append(chr(i))
甚至更好,取而代之的是列表理解:
letters = [chr(i) for i in range(33,127)]