John车俊林 发表于 2019-11-12 17:32:49

寻求得到帮助

请问零基础入门学习python中035中动动手1——实现一个用于登记用户账号信息的界面,源代码如下:
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))
   
请问fieldValues同时赋予了两次值(即fieldValues = []和fieldValues = g.multenterbox(msg, title, fieldNames))的作用是什么呢?还有if fieldValues == None 这句代码是什么意思啊,fieldValues的什么才是为None呢? 请求得到回答,谢谢啦!
      

heboy18 发表于 2019-11-12 17:56:39

fieldValues = []这行不要也没问题啊

heboy18 发表于 2019-11-12 18:06:38

用户什么都不输入,就是none,这个应该是easygui里面是这样判断返回的,可以去看看它的源码

John车俊林 发表于 2019-11-12 20:28:51

heboy18 发表于 2019-11-12 18:06
用户什么都不输入,就是none,这个应该是easygui里面是这样判断返回的,可以去看看它的源码

在这个程序里如果None是什么都不输入的话,是会跳出这个程序的。而实际上什么都没输按OK键后会继续弹出下一个对话框进行输入。所以这里 if fieldValues == None:下对应的break就失效了。所以我不是很理解

heboy18 发表于 2019-11-13 11:56:43

easygui里面是这样判断返回,你点击cancle取消,就是返回一个None,break是跳出当前层的循环,也就是while的循环。怎么会失效?

John车俊林 发表于 2019-11-13 16:16:22

heboy18 发表于 2019-11-13 11:56
easygui里面是这样判断返回,你点击cancle取消,就是返回一个None,break是跳出当前层的循环,也就是while的 ...

刚试了,是这样的,没有理解到是退出再返回None。谢谢你的解答
页: [1]
查看完整版本: 寻求得到帮助