鱼C论坛

 找回密码
 立即注册
查看: 3361|回复: 7

如何判断输入的数值赋值到标签中的数据类型?

[复制链接]
发表于 2015-11-23 20:43:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 seedcm 于 2015-11-23 20:46 编辑

如果直接将数值赋值给 a ,可以正确判断,比如:
  1. a = 12
  2. print(type(a))

  3. if isinstance(a,int):
  4.         print('int')
  5. else:
  6.         print('some else')
  7.        
  8. if type(a) != int:
  9.         print('some esle')
  10. else:
  11.         print('int')
复制代码


但如果进行输入并将数值赋值给 a ,系统只会判断 被赋值内容 a ,而且判断出来的结果永远是 str (因为 a 本身就是 str 类型,而不能正确判断出该赋值内容中的数据类型 (int)了!比如:
  1. a = input(':')
  2. print(type(a))

  3. if isinstance(a,int):
  4.         print('int')
  5. else:
  6.         print('some else')
  7.        
  8. if type(a) != int:
  9.         print('some esle')
  10. else:
  11.         print('int')
复制代码


这就是我的问题!怎么样才能判断 a 里面的数据类型,并作为一个或几个判断条件?
谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-23 20:57:27 | 显示全部楼层
将第二个程序的第一行改为下面的代码。
  1. a = eval(input(':'))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-23 21:29:50 | 显示全部楼层
冬雪雪冬 发表于 2015-11-23 20:57
将第二个程序的第一行改为下面的代码。

非常感谢!太谢谢你了!:big

不过:sad又一个问题出现了!
  1. a = eval(input(":"))
  2. if isinstance(a,int):
  3.         print('this is int')
  4. else:
  5.         print('it\'s not int!')
复制代码

在这段代码中,当你输入int数据后,程序可以正确判断并执行。
但是当你输入非int数据类型的数据后,程序就会报错
  1. :sd
  2. Traceback (most recent call last):
  3.   File "temp.py", line 1, in <module>
  4.     a = eval(input(":"))
  5.   File "<string>", line 1, in <module>
  6. NameError: name 'sd' is not defined
复制代码

而且,当我输入float时,程序的判断可以判断并执行完毕,但结果仍然是int!
希望赐教!谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 21:45:12 | 显示全部楼层
用eval函数只能是数值或数值的表达式,字符串就不行了。可以用try做异常处理。
  1. try:
  2.     a = eval(input(":"))
  3. except:
  4.     print('this is a string')
  5. else:
  6.     if isinstance(a,int):
  7.             print('this is int')
  8.     else:
  9.             print('it\'s not int!')
复制代码


另外浮点数是可以判断为非整数的。我的计算结果如下:
  1. >>> ================================ RESTART ================================
  2. >>>
  3. :12.3
  4. it's not int!
  5. >>> ================================ RESTART ================================
  6. >>>
  7. :12
  8. this is int
  9. >>> ================================ RESTART ================================
  10. >>>
  11. :12.3
  12. it's not int!
  13. >>> ================================ RESTART ================================
  14. >>>
  15. :abc
  16. this is a string
  17. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-23 21:54:35 | 显示全部楼层
冬雪雪冬 发表于 2015-11-23 21:45
用eval函数只能是数值或数值的表达式,字符串就不行了。可以用try做异常处理。

woooooooooooo。。。。。。。。太感谢了!!!:big:big:big:big
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-23 21:56:01 | 显示全部楼层
还可以这样写。
  1. a=input(':')
  2. if a.isdigit():
  3.     a=eval(a)
  4.     if type(a)==int:
  5.         print('This is a integer.')
  6.     else:
  7.         print('This is a float.')
  8. else:
  9.     print('This is a string.')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-24 21:08:13 | 显示全部楼层

:sad我还没有学这么多。。不过还是非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-2 12:36:38 | 显示全部楼层
看了这么多,觉得不错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-18 11:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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