为什么在使用''.join()之后我得到空格?

时间:2018-08-16 13:46:37

标签: python python-3.x

我是编程的初学者,而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))

2 个答案:

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