鱼C论坛

 找回密码
 立即注册
查看: 2039|回复: 6

[已解决]求解决python代码处if语句执行出错问题

[复制链接]
发表于 2017-4-30 14:33:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先对点进来的鱼友们表示万分感谢,废话不多说我就直接进入主题吧。

此代码执行的业务是模拟医院挂号就诊的问题,分为三步:

        第一步:病人到达后提交病历号,利用列表的形式将号码存储进去。
        第二步:护士开始叫患者就诊,采用队列的形式弹出,也就是“先进先出”。被弹出的数据在列表内消失。
        第三步:下班时间到,不再接受病人挂号,将列表里的数据依次弹出,并清空列表。
       
问题出在第二步,当列表里的数据没有时,它并没有打印出“无病人挂号”这句话并且返回上一层,而是直接出现报错。

报错详情如图所示;附上代码

  1. list = []
  2. flag = 1
  3. while(flag == 1):
  4.         _com = input("请输入命令:")
  5.         com =_com
  6.         if com == 'a':
  7.                 _num = input("病历号:")
  8.                 num = int(_num)
  9.                 list.append(num)
  10.                 continue
  11.        
  12. #问题出现
  13.         elif com =='n':
  14.                 if list != None:
  15.                         print("病历号为",list.pop(0),"的病人就诊")
  16.                         continue
  17.                 else:
  18.                         print("无病人挂号就诊!")
  19.                         continue
  20. #问题结束
  21.                
  22.         elif com =='q':
  23.                 print("今天停止挂号,下列病人依次就诊:")
  24.                 for i in range(len(list)):
  25.                         print("病历号为:", list[i], "")
  26.                 list.clear()
  27.                 flag = 0       
  28.                 continue
复制代码

       
最佳答案
2017-4-30 15:22:00
空列表并不等于None,它们的类型就不一样,一个是列表类型,一个是None类型
你可以把
  1. if list != None:
复制代码

换成
  1. if list:
复制代码

报错

报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-30 15:22:00 | 显示全部楼层    本楼为最佳答案   
空列表并不等于None,它们的类型就不一样,一个是列表类型,一个是None类型
你可以把
  1. if list != None:
复制代码

换成
  1. if list:
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 15:23:17 | 显示全部楼层
空列表当然无法pop()了,你在前面加个if来检测是否为空不就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 15:26:41 | 显示全部楼层
本帖最后由 小锟 于 2017-4-30 15:30 编辑

把那个判断的语句变为
  1. if len(list)!=0 :
  2.                         print("病历号为",list.pop(0),"的病人就诊")
  3.                         continue
  4.                 else:
  5.                         print("无病人挂号就诊!")
  6.                         continue
复制代码




list1 != None 这个条件一直是True的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-2 08:45:47 | 显示全部楼层
18813034116 发表于 2017-4-30 15:22
空列表并不等于None,它们的类型就不一样,一个是列表类型,一个是None类型
你可以把

蟹蟹啦,问题已经解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-2 08:46:51 | 显示全部楼层
老甲鱼与小甲鱼 发表于 2017-4-30 15:23
空列表当然无法pop()了,你在前面加个if来检测是否为空不就行了

我加了if了,只不过条件错了,现在已经改了,蟹蟹啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-2 08:47:38 | 显示全部楼层
小锟 发表于 2017-4-30 15:26
把那个判断的语句变为

嗯嗯,问题已经解决,蟹蟹啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表