三只羊 发表于 2018-12-24 17:29:17

第035讲:图形用户界面入门 习题一的问题

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))
   




有点不能理解上面的思路,为什么要设置那两个条件?(已在代码中标注出##)

heidern0612 发表于 2018-12-24 17:29:18


第一个#,当用户cancel的时候,filedValues返回值为None。

什么时候返回None,我记得老师帖子里面有讲。

第二个#,没有提示消息的时候(*号都输入了),程序正常跳出循环。

MargaretDdarcy 发表于 2019-2-21 10:42:12

heidern0612 发表于 2018-12-24 17:29
第一个#,当用户cancel的时候,filedValues返回值为None。

什么时候返回None,我记得老师帖子里面有讲 ...

请问,为什么第一个break没有跳出循环,但是第二个就跳出循环了呢?

phpwl 发表于 2020-4-4 19:23:34

MargaretDdarcy 发表于 2019-2-21 10:42
请问,为什么第一个break没有跳出循环,但是第二个就跳出循环了呢?

第一个是取消退出
第二个是带*的填完退出
页: [1]
查看完整版本: 第035讲:图形用户界面入门 习题一的问题