入土 发表于 2020-5-7 20:29:42

easygui的一个关于循环的问题

本帖最后由 入土 于 2020-5-7 20:32 编辑

import easygui as g

content = [' *日期 ',' *时间 ',' 退出指令(q\Q)']
msg = '请输入具体考勤内容:'
title = '考勤'
values = []
values = g.multenterbox(msg,title,content)


while 1:
    errmsg = ''
    for i in range(len(content)):
      option = content.strip()
      if values.strip() == '' and option == '*':
            errmsg += ('【%s】为必填项。\n' % content)
         
    if errmsg != '':
      values = g.multenterbox(errmsg,title,content)
      print(values)
      print(values)
    if values == 'q' or 'Q':
      break


代码如上我想让弹窗一直循环下去,可是只能循环2次

点OK或者只输入日期或时间中的其中一个时

窗口循环弹出了,但只能弹一次

我把最后一行代码:
if values == 'q' or 'Q':
      break
删了之后确好了
求助大佬们这是为啥?

zltzlt 发表于 2020-5-7 20:30:53

写 Python 程序不能这样偷懒,需要这样写:

    if values == 'q' or values == 'Q':
      break

values == 'q' or 'Q' 永远都是 True,因为 'Q' 为 True

qiuyouzhi 发表于 2020-5-7 20:31:24

Python没有那么的智能,你得写成:
if values == 'q' or values == 'Q':
不然,一定会为True,因为Q的ASCII码不为0

zltzlt 发表于 2020-5-7 20:32:01

qiuyouzhi 发表于 2020-5-7 20:31
Python没有那么的智能,你得写成:

不然,一定会为True,因为Q的ASCII码不为0

>>> bool(chr(0))
True

永恒的蓝色梦想 发表于 2020-5-7 20:37:22

qiuyouzhi 发表于 2020-5-7 20:31
Python没有那么的智能,你得写成:

不然,一定会为True,因为Q的ASCII码不为0

Python 没有 char 型,除非空字符串都为 True
页: [1]
查看完整版本: easygui的一个关于循环的问题