鱼C论坛

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

关于isdigit的问题

[复制链接]
发表于 2014-10-16 16:36:27 | 显示全部楼层 |阅读模式

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

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

x
鱼油们,请教大家一个问题。
print ("----------华丽的开始-----------")
i = int(1)
#定义一个变量i,让程序进入死循环
while i != 0 :
#死循环
    num = input ("请输入一个年份或者按Q退出:")
    if num != "q" :
#判断是否退除
        if isinstance(1,int) == num.isdigit() and int(num) != 0 :
#判断输入的是否是一个合法的年份
            a = int(num)
            y = int(a/4)
            if isinstance(1,int) == isinstance(y,int):
                print ("这是一个闰年")
            else :
                print ("这不是一个闰年")
        else :
            print ("你输入的不是一个数字或者这个年份是一个小于0的数字!")
    else :
        i = 0
print ("你已退出该游戏!")

我写了如上一段小程序,其中的isdigit函数我该如何理解?
刚开始我认为isdigit的参数为负数的时候,返回值会为true,但在我写的这个小程序中,输入负数检测的结果为不合法,会执行else的内容!
明显我的想法是错的。我想求证下,isdigit是否只有当数字为正数的时候才会返回true。
另外,图片上是我做的测试,我不明白为什么会报错,求解答!谢谢
QQ截图20141016162729.jpg

本帖被以下淘专辑推荐:

  • · python|主题: 12, 订阅: 37
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-16 18:09:17 | 显示全部楼层
本帖最后由 wei_Y 于 2014-10-16 18:10 编辑

1.str.isdigit()是字符串方法。 360截图20141016175742199.jpg int是木有这个方法的。
既然是字符串的方法'-'这个符号他就不会认为是负号了。 360截图20141016175936062.jpg
而且input里输入之后是个字符串,并不是个整数。 360截图20141016180103829.jpg
可以看一下小甲鱼老师滴。
http://bbs.fishc.com/thread-38992-1-1.html
2.死循环可以直接while 1: ,int(1)这个有点多余,1本来就是整数。不用int。退出循环可以break。
3.你这个不管输入几都会返回闰年,y = int(a/4)这句明显是取整,isinstance(y,int)这里就无论如何都是True。你可以用 y = a%4来判断余数是否为0,下面也改改。因为即使去掉int之后返回的是个浮点,这样就都不是闰年了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-16 18:09:34 | 显示全部楼层
isdigit 是字符串类的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-17 10:36:54 | 显示全部楼层
wei_Y 发表于 2014-10-16 18:09
1.str.isdigit()是字符串方法。int是木有这个方法的。
既然是字符串的方法'-'这个符号他就不会认为是负号 ...

多谢,程序我已经修改完了。
print ("----------华丽的开始-----------")
while 1 :
#死循环
    num = input ("请输入一个年份或者按Q退出:")
    if num != "q" :
#判断是否退出
        if isinstance(1,int) == num.isdigit() and int(num) != 0 and not isinstance(num,float) :
#判断输入的是否是一个合法的年份。输入的是一个数字,该数字不为0,并且不为浮点型
            a = int(num)
            y = a%4
#做闰年运算
            if y == 0:
#判断是否是闰年
                print ("这是一个闰年")
            else :
                print ("这不是一个闰年")
        else :
            print ("你输入的不是一个有效的年份,请重新输入!")
    else :
        break
print ("你已退出该游戏!")
目测是实现了,谢谢!
但有一个问题,input()输入的总会是一个字符,在python中有一个方法,把它的属性改成数字么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-17 13:05:20 | 显示全部楼层
yang4225231 发表于 2014-10-17 10:36
多谢,程序我已经修改完了。
print ("----------华丽的开始-----------")
while 1 :

应该只有int()这个方法。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-17 14:25:08 | 显示全部楼层
wei_Y 发表于 2014-10-17 13:05
应该只有int()这个方法。。

好的,3Q
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-17 16:43:59 | 显示全部楼层
楼上加1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-29 19:35:12 | 显示全部楼层
学习了,3Q
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-10 23:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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