在 python 中用 while 循环重复一个程序

Reapeating a program with a while loop in python

我在程序末尾创建了一个 while True 循环,还有一个函数 repeat() 检查它是否为空字符串,如果 运行 则应该重新启动程序在循环。正确的?我不确定它是否特定于版本...

import string
import random 

ascii = string.ascii_letters
digits = string.digits
punct = string.punctuation

characters = ascii + digits + punct

def repeat():
    check = ""
    if check.upper() == "":
       print(password)

 myList = list(characters)

 random.shuffle(myList)

 passwordraw = myList[:15]
 password = ''.join(map(str, passwordraw))

 while True:
    repeat()
    break

您仅在调用 repeat() 一次后就跳出了 while 循环。 去掉break继续循环调用repeat()方法

只是:

while True:
  repeat()

旁注:如果您喜欢的话,我会在调用 repeat() 后添加某种延迟。类似于:

# don't forget to import time
import time

# the rest of your code

while True:
  repeat()
  time.sleep(3) # Sleep for 3 seconds

现在您的程序将在 运行 repeat() 后再次等待 3 秒。

while 循环将仅在满足参数时循环遍历在循环内编写的任何代码。在您的情况下,虽然 true 会重复,但如果 false 则不会。如果您想更改循环的内容,请更改循环参数中的内容。

第一步是清理代码。密码的创建归结为:

import random
import string


def main():
    characters = list(string.ascii_letters + string.digits + string.punctuation)
    random.shuffle(characters)
    password = ''.join(characters[:15])
    print(password)

if __name__ == '__main__':
    main()

您的描述不是很清楚您要检查的内容。目前我假设您希望用户输入密码并重复密码生成和检查的整个过程,直到生成的密码与用户输入匹配。

def main():
    characters = list(string.ascii_letters + string.digits + string.punctuation)
    while True:
        random.shuffle(characters)
        password = ''.join(characters[:15])
        print(password)
        password_input = input('Enter the password: ')
        if password == password_input:
            break

现在只有输入正确的随机密码(15个不同的字符)才能退出循环。您不太可能做到这一点(这就是我在代码中保留 print 的原因)并且我不确定这是否是您希望程序执行的操作。您可能想澄清您的问题并解释“if it's an empty string”中的“it”是什么。