【发布时间】:2021-09-11 09:48:33
【问题描述】:
我还是个初学者,所以我可能遗漏了一些明显的东西。 我正在尝试使用随机符号、字母和数字生成密码,并且应该只使用我们已经学过的功能(所以没有高级的东西)。
这是有问题的代码:
l=[]
s=[]
numb=[]
for letter in range (0,(nr_letters)):
l.append(random.choice(letters))
for symbol in range(0,(nr_symbols)):
s.append(random.choice(symbols))
for numbers in range(0,(nr_numbers)):
numb.append(random.choice(numbers))
(Info:“nr_letters”(以及“nr_symbols”等)是用户给我们的输入,而“letters”是一个字符串列表。)
“for”函数可以很好地处理字母和符号,但我会收到“数字”的回溯,即使数字列表也是由字符串组成的。 这是回溯:
Traceback (most recent call last):
File "main.py", line 27, in <module>
numb.append(random.choice(numbers))
File "/usr/lib/python3.8/random.py", line 288, in choice
i = self._randbelow(len(seq))
TypeError: object of type 'int' has no len()
我试图再次告诉 python,我的数字列表中没有积分,所以我写了
numb.append(random.choice(str(numbers)))
但是,虽然 Python 现在出于某种原因理解该列表中的项目是字符串,但它现在似乎忽略了“random.choice”位,因为它从 0 开始按顺序打印数字。
我在这里做错了什么?并且请不要对其余代码进行更正,因为我确实想尝试主要自己完成该项目,否则我将学不到任何东西。我只是不明白为什么 python 没有做我认为我告诉它在这里做的事情。 任何帮助表示赞赏!
【问题讨论】:
-
你能告诉我们你的“数字”变量包含什么吗?所以我们可以以更好的方式帮助您?
标签: python random types module traceback