for循环

jaxagkaj  于 2021-09-08  发布在  Java
关注(0)|答案(4)|浏览(228)

我的函数可以工作,但我希望能够获取用户输入的密码数,然后循环遍历函数,但它只遍历一次。我也试过一段时间了,没错;循环,但也没有快乐。

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()
6yt4nkrj

6yt4nkrj1#

你真的需要 usernumber = int(input('\nHow many passwords: '))

for i in range(amount):
    genpass()

当您不将字符串转换为整数并在for循环中使用它时,它将迭代字符或字符串的长度,而不是数字。在您的代码中,当您输入 1 ,它将转换为 '1' as输入返回一个字符串。此值被指定给 amount .
这实际上只会迭代一次,因为字符串中只有一个字符。

for i in amount:
    genpass()
bvn4nwqk

bvn4nwqk2#

当你打电话的时候 input 你得到一个字符串,意思是 amount 也是一个字符串。当你反复讨论这个问题时, i 将是字符串中的每个字符:so输入 4 将运行 genpass 循环一次,用 i = 4 .
要迭代多次,您需要将输入解析为一个数字并运行多次。例如:

amount = int(usernumber)
for i in range(amount):
    ...
zzoitvuj

zzoitvuj3#

由于您在输入中使用整数,因此需要将int添加到输入:)并将range添加到“for i in range amount”
这样就可以了,如果有任何错误,请告诉我:)
导入字符串随机导入
usernumber=int(输入('\n密码数:')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)

对于i范围内的金额:genpass()

kyvafyod

kyvafyod4#

您在获取“usernumber”中的输入时犯了一些错误,并忘记在最后一个字段中添加range命令

import string
import random

usernumber = int((input('\nHow many passwords: ')))
amount = usernumber
length = int(input('\nEnter the length of the password: '))
def genpass():

    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 range(amount):
    genpass()

为了简单起见,我还将“密码长度”块移出了循环。

相关问题