我是编程的初学者,而python是我的第一语言,有人可以向我解释为什么在执行此代码后为什么会出现空格?它的一部分代码,我必须根据Practicepython.org上的练习16创建密码生成器。
def strong():
result = []
symbols = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=',
'+']
alpha = list(string.ascii_letters)
numbers = list(range(1,10))
leng = random.randint(2,3)
for i in range(leng):
randomise = random.randint(2,3)
print(randomise)
if randomise ==2:
result += random.choice(symbols)
result += random.choice(str(numbers))
result += random.choice(symbols)
result += random.choice(alpha)
result += random.choice(str(numbers))
result += random.choice(alpha)
elif randomise ==3:
result += random.choice(symbols)
result += random.choice(str(numbers))
result += random.choice(symbols)
result += random.choice(str(numbers))
result += random.choice(alpha)
result += random.choice(symbols)
result += random.choice(alpha)
result += random.choice(str(numbers))
result += random.choice(alpha)
print(result)
print(''.join(result))
答案 0 :(得分:5)
您的问题在这里:
random.choice(str(numbers))
str(numbers)
将整个列表字符串化,产生'[1, 2, 3, 4, 5, 6, 7, 8, 9]'
,这是空格输入可能的字符列表的地方。
我建议使用string.digits
:
numbers = string.digits
如下面的评论所述,该地址中会包含“ 0
”,因此,如果出现问题,则可以选择另一种选择
numbers = '123456789'
答案 1 :(得分:2)
您只需要更换
random.choice(str(numbers))
到
str(random.choice(numbers))
您的代码应为:
if randomise ==2:
result += random.choice(symbols)
result += str(random.choice(numbers))
result += random.choice(symbols)
result += random.choice(alpha)
result += str(random.choice(numbers))
result += random.choice(alpha)
elif randomise ==3:
result += random.choice(symbols)
result += str(random.choice(numbers))
result += random.choice(symbols)
result += str(random.choice(numbers))
result += random.choice(alpha)
result += random.choice(symbols)
result += random.choice(alpha)
result += str(random.choice(numbers))
result += random.choice(alpha)