鱼C论坛

 找回密码
 立即注册
查看: 2285|回复: 5

函数出错

[复制链接]
发表于 2016-9-30 18:26:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Estein 于 2016-9-30 18:28 编辑
  1. # -*- coding: cp936 -*-
  2. def Get():
  3.     Ipt_list = input("请输入4个数,缺省用'*'填充:")

  4.     A1 = Ipt_list[0]
  5.     A2 = Ipt_list[1]
  6.     A3 = Ipt_list[2]
  7.     A4 = Ipt_list[3]
  8.     return A1,A2,A3,A4

  9. def Mode_selection(A1,A2,A3,A4):
  10.     count = 0
  11.    
  12.     for each in A1,A2,A3,A4:
  13.         if each is not '*':
  14.             count += 1
  15.             
  16.     if count != 1:
  17.         print('请重新输入数据(数据过多,或过少)!')
  18.         print count
  19.         Mode = 0
  20.         
  21.     else:
  22.         if A1 is not '*':
  23.             Mode = 1
  24.         elif A2 is not '*':
  25.             Mode = 2
  26.         elif A3 is not '*':
  27.             Mode = 3
  28.         elif A4 is not '*':
  29.             Mode = 4

  30.     return Mode

  31. def main():
  32.     A1,A2,A3,A4 = Get()
  33.     Mode = Mode_selection(A1,A2,A3,A4)
  34.     return Mode
  35. Mode = main()
  36. print Mode
复制代码


输入[1,'*','*','*']
得不到预期结果Mode = 1,输出为0
单独测试函数功能良好
  1. def Get():
  2.     Ipt_list = input("请输入4个数,缺省用'*'填充:")

  3.     A1 = Ipt_list[0]
  4.     A2 = Ipt_list[1]
  5.     A3 = Ipt_list[2]
  6.     A4 = Ipt_list[3]
  7.     return A1,A2,A3,A4
  8. def Mode_selection(A1,A2,A3,A4):
  9.     count = 0
  10.    
  11.     for each in A1,A2,A3,A4:
  12.         if each is not '*':
  13.             count += 1
  14.             
  15.     if count != 1:
  16.         print('请重新输入数据(数据过多,或过少)!')
  17.         print count
  18.         Mode = 0
  19.         
  20.     else:
  21.         if A1 is not '*':
  22.             Mode = 1
  23.         elif A2 is not '*':
  24.             Mode = 2
  25.         elif A3 is not '*':
  26.             Mode = 3
  27.         elif A4 is not '*':
  28.             Mode = 4

  29.     return Mode
  30. >>> A1,A2,A3,A4 = Get()
  31. 请输入4个数,缺省用'*'填充:[1,'*','*','*']
  32. >>> Mode = Mode_selection(A1,A2,A3,A4)
  33. >>> Mode
  34. 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-9-30 18:27:32 | 显示全部楼层
补充说明一下,环境python2.7
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-30 20:45:46 | 显示全部楼层
你看看这样得到的是个列表吗?
  1. >>> Ipt_list = input("请输入4个数,缺省用'*'填充:")
  2. 请输入4个数,缺省用'*'填充:[1,'*','*','*']
  3. >>> Ipt_list
  4. "[1,'*','*','*']"
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 20:57:18 | 显示全部楼层
冬雪雪冬 发表于 2016-9-30 20:45
你看看这样得到的是个列表吗?

你这是python3的运行结果,python2里raw_input才对应py3的input,所以我事先声明过用的是py2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-30 21:35:03 | 显示全部楼层
Estein 发表于 2016-9-30 20:57
你这是python3的运行结果,python2里raw_input才对应py3的input,所以我事先声明过用的是py2

你把15行改为if each != '*': 试一试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 22:57:28 | 显示全部楼层
本帖最后由 Estein 于 2016-9-30 22:59 编辑
冬雪雪冬 发表于 2016-9-30 21:35
你把15行改为if each != '*': 试一试


解决了,不过为什么函数块单独测试 is not就没问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 02:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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