鱼C论坛

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

[已解决]s.isdigit 和 isinstance(s,int) 的选择?

[复制链接]
发表于 2021-4-8 18:43:42 | 显示全部楼层 |阅读模式

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

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

x
为什么图中画红色部分【temp.isdigit():】{图1}改成【isinstance(temp,int)】{图2}就无法运行了呢?
最佳答案
2021-4-8 19:18:50
本帖最后由 肖-肖 于 2021-4-8 19:21 编辑

可能input默认接收将你输入的东西的类型转为字符串类型了吧!
所以用isinstance判断的时候:是判断一个字符串是不是整型数字或浮点型的
你输入的1234是一个字符串,不是数字类型的
所以永远为判断的结果永远为False.
.isdigit()是判断一个字符串的内容是否为整数的,所以用这个是可以的!
它们两者的区别详情见下图:
ls18.png

图1

图1

图2

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

使用道具 举报

发表于 2021-4-8 19:13:29 | 显示全部楼层

回帖奖励 +5 鱼币

本帖最后由 逃兵 于 2021-4-8 19:16 编辑

因为input()函数返回的是一个字符串

你输入的是213

返回的结果是 '213'

temp = '213'

'213'是字符串,不是整型了,isinstance(temp,int)永远返回False



isdigit()是用来判断字符串是不是由纯数字组成

temp = '213'

temp是由纯数字组成的字符串,所以temp.isdigit()返回True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-8 19:18:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 肖-肖 于 2021-4-8 19:21 编辑

可能input默认接收将你输入的东西的类型转为字符串类型了吧!
所以用isinstance判断的时候:是判断一个字符串是不是整型数字或浮点型的
你输入的1234是一个字符串,不是数字类型的
所以永远为判断的结果永远为False.
.isdigit()是判断一个字符串的内容是否为整数的,所以用这个是可以的!
它们两者的区别详情见下图:
ls18.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 19:23:56 | 显示全部楼层
逃兵 发表于 2021-4-8 19:13
因为input()函数返回的是一个字符串

你输入的是213

明白了,感谢解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 19:51:18 | 显示全部楼层
肖-肖 发表于 2021-4-8 19:18
可能input默认接收将你输入的东西的类型转为字符串类型了吧!
所以用isinstance判断的时候:是判断一个字 ...

好的,明白啦,感谢解答!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 20:24:33 | 显示全部楼层
IEECO 发表于 2021-4-8 19:51
好的,明白啦,感谢解答!!

不客气( ̄︶ ̄)↗ 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-5 15:07:16 | 显示全部楼层
這裡我沒有用到判斷整數語句,直接用 try() 由系統自己判斷
  1. while True:
  2.     try:
  3.         num = int(input("請輸入一個年份:\n"))
  4.         if num%100 != 0 and num%4 == 0:
  5.             print(f"{num} 是閏年")
  6.         else:
  7.             print(f"{num} 不是閏年")
  8.         break
  9.     except:
  10.         print("輸入不正確,請重試")
  11.         continue
复制代码

當然,如果你想要用判斷是否整數語句,可以試試用 type(),如:
  1. x = 12345
  2. y = "12345"

  3. if type(x) == int:
  4.     print("x is an integer")
  5. else:
  6.     print("x is not an integer")

  7. if type(y) == int:
  8.     print("y is an integer")
  9. else:
  10.     print("y is not an integer")
复制代码
  1. x is an integer
  2. y is not an integer
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-9-22 21:49:04 | 显示全部楼层
傻眼貓咪 发表于 2021-9-5 15:07
這裡我沒有用到判斷整數語句,直接用 try() 由系統自己判斷

當然,如果你想要用判斷是否整數語句,可以 ...

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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