sunyt 发表于 2021-9-25 15:34:38

关于python中break的疑问



import easygui as g

msg = "请填写以下联系方式"
title = "账号中心"
fieldNames = [" *用户名", " *真实姓名", "固定电话", " *手机号码", "QQ", " *E-mail"]
fieldValues = []
fieldValues = g.multenterbox(msg, title, fieldNames)

while 1:
    if fieldValues == None:
      break
    errmsg = ""
    for i in range(len(fieldNames)):
      option = fieldNames.strip()
      if fieldValues.strip() == "" and option == "*":
            errmsg += ('【%s】为必填项。\n\n' % fieldNames)
    if errmsg == "":
      break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

print("用户资料如下:%s" % str(fieldValues))
   


while 1:
    if fieldValues == None:
      break
    errmsg = ""
    for i in range(len(fieldNames)):
      option = fieldNames.strip()
      if fieldValues.strip() == "" and option == "*":
            errmsg += ('【%s】为必填项。\n\n' % fieldNames)
    if errmsg == "":
      break
    fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues)

按我的理解第一个break不是已经退出while了吗,第二个break是什么意思,求讲解

Twilight6 发表于 2021-9-25 15:34:39


第一个 break 是在:

if fieldValues == None:
      break

之下的,而 fieldValues 被赋值为 组件 multenterbox,该组件点击 Cancle 时候就会返回 None 给 fieldValues

所以第一个 break 是判断用户是否按下了 取消,按下即退出循环,而第二个:
if errmsg == "":
      break
是判断你是否全部输入合法内容,若字符串为空则说明你带 * 号的输入框内输入合法,则退出循环,不需要再重新进行输入

最终的执念 发表于 2021-9-26 16:00:28

第一个break一定会执行吗.....
页: [1]
查看完整版本: 关于python中break的疑问