而loop赢了';不要打断,python

而loop赢了';不要打断,python,python,loops,while-loop,Python,Loops,While Loop,所以我有一个问题,while循环不会中断: print 'Enter your chosen email below!' def valid_email(mail): email = mail[-len('@gmail.com'):len(mail)] failled = mail[0:-len('@gmail.com')] condition = True while condition: for a in mail: if

所以我有一个问题,while循环不会中断:

print 'Enter your chosen email below!'
def valid_email(mail):
    email = mail[-len('@gmail.com'):len(mail)]
    failled = mail[0:-len('@gmail.com')]
    condition = True
    while condition:
        for a in mail:
           if a == ' ':
                print 'Try again'
                condition = False

        if email == '@gmail.com':
            print 'You have succesfully logged in our website!'
            break
        else:
            print 'Did you mean ' + failled + 'gmail.com'
        break

print valid_email('eq@gmai l.com')
我得到输出:

Enter your chosen email below!
Try again
Did you mean eq@gmail.com
我期望:

Enter your chosen email below!
Try again

谢谢你抽出时间

如果您只是尝试删除空格,那么我建议使用str.replace(“,”)(其中str=电子邮件地址)

尝试在中使用
而不是for循环:

if ' ' in email:
    break
当您中断
for
循环时,您只中断了该循环,而不是
while
循环。

break语句与C中的语句一样,从最小的for或while循环中中断

您正在打破for循环,而不是while循环。我想这正是你想要的:

print 'Enter your chosen email below!'
def valid_email(mail):
    email = mail[-len('@gmail.com'):len(mail)]
    failled = mail[0:-len('@gmail.com')]

    if ' ' in mail:
        print 'Try again'

    if email == '@gmail.com':
        print 'You have succesfully logged in our website!'
    else:
        print 'Did you mean ' + failled + 'gmail.com'

print valid_email('eq@gmai l.com')

只有在每次迭代开始时检查条件,循环才会中断。因为在循环的中间设置<代码>条件= false <代码>,下面的代码仍然是RunYub,而不是<代码>中断<代码>,而不是<代码>条件> false 或检查<代码>如果条件=truth,然后执行IF CuthStbug对我来说不起作用,如果语句工作正常,但我仍然无法理解当前代码是如何工作的。我希望如果用户写入无效地址,会弹出错误提示。:P