i f 执行完又跳回去再次执行?咋回事?

问题遇到的现象和发生背景

定义一个字典,输入正确的存在字典的账号密码登录,如果账号不存在,跳转注册,

问题相关代码,请勿粘贴截图
dic={'admin':'123456','cheer':'654321'}
def login():
 for name in dic:
    name=input("请输入账号:")
    if dic.__contains__(name):
        password=input('请输入密码:')
        if password==dic.get(name):
            print('登陆成功')
        else:
            print('密码错误')
    else:
        print('账户名错误')
        zc()


def zc():
    zc_name=input('请输入注册账号')
    if dic.__contains__(zc_name):
        print('账号已存在,请重新登录')
    else:
        zc_mi=input('请输入密码')
        zc_ma=input('请再次输入密码')
        if zc_mi==zc_ma:
            print('两次密码一致,注册成功')
            dic.setdefault(zc_name,zc_mi)
        else:
            print('密码不一致')

运行结果及报错内容

请输入账号:admin
请输入密码:123456
登陆成功
请输入账号:

我的解答思路和尝试过的方法

实在想不出

我想要达到的结果

怎么往下执行??

加一个break,登录成功就可以结束循环了。


dic={'admin':'123456','cheer':'654321'}
def login():
 for name in dic:
    name=input("请输入账号:")
    if dic.__contains__(name):
        password=input('请输入密码:')
        if password==dic.get(name):
            print('登陆成功')
            break
        else:
            print('密码错误')
    else:
        print('账户名错误')
        zc()
 
def zc():
    zc_name=input('请输入注册账号')
    if dic.__contains__(zc_name):
        print('账号已存在,请重新登录')
    else:
        zc_mi=input('请输入密码')
        zc_ma=input('请再次输入密码')
        if zc_mi==zc_ma:
            print('两次密码一致,注册成功')
            dic.setdefault(zc_name,zc_mi)
        else:
            print('密码不一致')

dic={'admin':'123456','cheer':'654321'}
def login():
    for name in dic:
        name=input("请输入账号:")
        if dic.__contains__(name):
            password=input('请输入密码:')
            if password==dic.get(name):
                print('登陆成功')
                break   # 登陆成功后加break跳出循环,也可以用 return
            else:
                print('密码错误')
        else:
            print('账户名错误')
            zc()
 
def zc():
    zc_name=input('请输入注册账号')
    if dic.__contains__(zc_name):
        print('账号已存在,请重新登录')
    else:
        zc_mi=input('请输入密码')
        zc_ma=input('请再次输入密码')
        if zc_mi==zc_ma:
            print('两次密码一致,注册成功')
            dic.setdefault(zc_name,zc_mi)
        else:
            print('密码不一致')