IEECO 发表于 2021-4-8 18:43:42

s.isdigit 和 isinstance(s,int) 的选择?

为什么图中画红色部分【temp.isdigit():】{图1}改成【isinstance(temp,int)】{图2}就无法运行了呢?

逃兵 发表于 2021-4-8 19:13:29

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

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

你输入的是213

返回的结果是 '213'

temp = '213'

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



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

temp = '213'

temp是由纯数字组成的字符串,所以temp.isdigit()返回True

肖-肖 发表于 2021-4-8 19:18:50

本帖最后由 肖-肖 于 2021-4-8 19:21 编辑

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

IEECO 发表于 2021-4-8 19:23:56

逃兵 发表于 2021-4-8 19:13
因为input()函数返回的是一个字符串

你输入的是213


明白了,感谢解答!

IEECO 发表于 2021-4-8 19:51:18

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

好的,明白啦,感谢解答!!

肖-肖 发表于 2021-4-8 20:24:33

IEECO 发表于 2021-4-8 19:51
好的,明白啦,感谢解答!!

不客气( ̄︶ ̄)↗ 

傻眼貓咪 发表于 2021-9-5 15:07:16

這裡我沒有用到判斷整數語句,直接用 try() 由系統自己判斷
while True:
    try:
      num = int(input("請輸入一個年份:\n"))
      if num%100 != 0 and num%4 == 0:
            print(f"{num} 是閏年")
      else:
            print(f"{num} 不是閏年")
      break
    except:
      print("輸入不正確,請重試")
      continue
當然,如果你想要用判斷是否整數語句,可以試試用 type(),如:
x = 12345
y = "12345"

if type(x) == int:
    print("x is an integer")
else:
    print("x is not an integer")

if type(y) == int:
    print("y is an integer")
else:
    print("y is not an integer")
x is an integer
y is not an integer

IEECO 发表于 2021-9-22 21:49:04

傻眼貓咪 发表于 2021-9-5 15:07
這裡我沒有用到判斷整數語句,直接用 try() 由系統自己判斷

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

谢谢!
页: [1]
查看完整版本: s.isdigit 和 isinstance(s,int) 的选择?