【问题标题】:print password.strip(",") AttributeError: 'list' object has no attribute 'strip'print password.strip(",") AttributeError: 'list' object has no attribute 'strip'
【发布时间】:2014-10-02 17:40:42
【问题描述】:

我对 python 还很陌生。我正在研究一个随机密码生成器。我能够让我的程序生成一个 随机密码。但是它有逗号(,)。我想去掉逗号。

看来我在使用 strip 命令时遇到了错误。下面的程序产生输出:

AttributeError: 'list' object has no attribute 'strip'

#! /usr/bin/python

import random
import string

def letter_num():
letter = random.choice(string.letters)
number = random.randint(0,9)
letter_number = [letter, number]
random_letnum = random.choice(letter_number)
return random_letnum

#print letter_num(),letter_num(),letter_num(),letter_num(),letter_num(),letter_num,letter_num(),letter_num()

password = [letter_num(),letter_num(),letter_num(),letter_num(),letter_num(),letter_num(),letter_num(),letter_num()]
print password.strip(",")

【问题讨论】:

标签: list python-2.7 strip


【解决方案1】:

那是因为在你的代码中密码是一个列表,你不能在列表上使用 strip。

试试下面的代码

 #! /usr/bin/python

import random
import string

def letter_num():
    letter = random.choice(string.letters)
    number = random.randint(0,9)
    letter_number = [letter, number]
    random_letnum = random.choice(letter_number)
    return random_letnum

password = ""
for a in xrange(10):
    password += str(letter_num())

print password.strip(",")

【讨论】:

  • 您的代码运行良好。我现在记得字符串和列表之间是有区别的。冒着听起来像个白痴的风险,你能解释一下你的代码块吗?我对变量“a”感到困惑。好像没什么用。我也对“密码 += str(letter_num())”感到困惑。我习惯于看到类似“password += 1”的东西来处理增量。
  • 'a' 没有用;它用于完成 for-in 循环的语法。 xrange 生成从 0 到 10 的数字范围。在 python 中 += 可以做字符串连接。在python中,我们需要以pythonic的方式做事。我也是python新手,所以这可能不是最优化的代码。
  • 阿伦,你的代码对我来说很好。效果很好。这很有趣,因为我今天早上醒来并重新阅读了代码。我实际上完全按照您的解释理解了它。谢谢你的帮助!!!
猜你喜欢
  • 2021-04-06
  • 2022-01-10
  • 2020-06-17
  • 1970-01-01
  • 2022-12-01
  • 2013-09-11
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多