而循环在Python中不起作用

2024-10-08 22:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我在这个while循环中苦苦挣扎,我试图让程序继续重复它自己,直到它输出一个下限、上限和数字,但它在我运行程序时结束

import random

num = 3
print(num)

message=""

for n in range(num):
    while message =="":
        newnum= random.randint(48,122)           
        if newnum > 47 and newnum < 58:
            val=chr(newnum)
            val = newnum
            message +=chr(val)

        elif newnum > 64 and newnum <91:
            val=chr(newnum)
            val = newnum
            message +=chr(val)

        elif newnum > 97 and newnum < 123:
            val=chr(newnum)
            val = newnum
            message +=chr(val)    

        else:
            newnum -= random.randint(7,10)
            val=chr(newnum)
            val = newnum
            message +=chr(val)

if (any(x.isupper() for x in message) and any(x.islower() for x in message)and any(x.isdigit() for x in message)):
    print(message)
else:
    message =""

Tags: andin程序messageforifanyrandom
3条回答

我认为你的问题出在错误的位置。尝试使用

for n in range(num):
    while message =="":
        newnum= random.randint(48,122)           
        if newnum > 47 and newnum < 58:
            val=chr(newnum)
            val = newnum
            message +=chr(val)

        elif newnum > 64 and newnum <91:
            val=chr(newnum)
            val = newnum
            message +=chr(val)

        elif newnum > 97 and newnum < 123:
            val=chr(newnum)
            val = newnum
            message +=chr(val)    

        else:
            newnum -= random.randint(7,10)
            val=chr(newnum)
            val = newnum
            message +=chr(val)

        if (any(x.isupper() for x in message) and any(x.islower() for x in message) and any(x.isdigit() for x in message)):
            print(message)
        else:
            message =""

你的问题主要是身份和while条件,看看我的代码。你知道吗

import random

num = 3
print(num)

message=""
end = False #set a valid condition to end the program
for n in range(num):
#   while message =="":
    while end == False:
        newnum= random.randint(48,122)           
        if newnum > 47 and newnum < 58:
            val=chr(newnum)
            val = newnum
            message +=chr(val)
        elif newnum > 64 and newnum <91:
            val=chr(newnum)
            val = newnum
            message +=chr(val)
        elif newnum > 97 and newnum < 123:
            val=chr(newnum)
            val = newnum
            message +=chr(val)    

        else:
            newnum -= random.randint(7,10)
            val=chr(newnum)
            val = newnum
            message +=chr(val)
        if (any(x.isupper() for x in message) 
             and any(x.islower() for x in message) 
             and any(x.isdigit() for x in message)):

            print(message)
            end=True
#       else:
#           message =""

在第一次迭代之后,您的消息将是!=的值,因为您将其设置为chr(val)。因此,它永远不会再次进入while循环,只会完成for循环。你知道吗

相关问题 更多 >

    热门问题