我的函数可以工作,但我希望能够获取用户输入的密码数,然后循环遍历函数,但它只遍历一次。我也试过一段时间了,没错;循环,但也没有快乐。
import string
import random
usernumber = (input('\nHow many passwords: '))
amount = usernumber
def genpass():
length = int(input('\nEnter the length of the password: '))
lower = string.ascii_lowercase
upper = string.ascii_uppercase
num = string.digits
symbols = string.punctuation
all = lower + upper + num + symbols
temp = random.sample(all,length)
password = "".join(temp)
print(password)
for i in amount:
genpass()
4条答案
按热度按时间6yt4nkrj1#
你真的需要
usernumber = int(input('\nHow many passwords: '))
和当您不将字符串转换为整数并在for循环中使用它时,它将迭代字符或字符串的长度,而不是数字。在您的代码中,当您输入
1
,它将转换为'1'
as输入返回一个字符串。此值被指定给amount
.这实际上只会迭代一次,因为字符串中只有一个字符。
bvn4nwqk2#
当你打电话的时候
input
你得到一个字符串,意思是amount
也是一个字符串。当你反复讨论这个问题时,i
将是字符串中的每个字符:so输入4
将运行genpass
循环一次,用i
=4
.要迭代多次,您需要将输入解析为一个数字并运行多次。例如:
zzoitvuj3#
由于您在输入中使用整数,因此需要将int添加到输入:)并将range添加到“for i in range amount”
这样就可以了,如果有任何错误,请告诉我:)
导入字符串随机导入
usernumber=int(输入('\n密码数:')amount=usernumber
def genpass():
对于i范围内的金额:genpass()
kyvafyod4#
您在获取“usernumber”中的输入时犯了一些错误,并忘记在最后一个字段中添加range命令
为了简单起见,我还将“密码长度”块移出了循环。