鱼C论坛

 找回密码
 立即注册
查看: 712|回复: 11

[已解决]关于第五节课后题的问题

[复制链接]
发表于 2019-6-28 09:57:09 | 显示全部楼层 |阅读模式

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

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

x
第五节课后动手题第0题,为什么用not isdigit可以在输入为浮点型和字符串型的情况下都判断为不是整数,而用isalpha却不能在字符串型的情况下判断为不是整数呢?这两者之间有什么区别?
还有,答案中temp为一个字符串型,为什么temp.isdigit可以成立?isdigit不是只能在所有字符全为真的情况下才返回为true吗?
最佳答案
2019-6-28 11:40:08
Jipeng_1208 发表于 2019-6-28 11:17
就是说temp=input()这里应该是一个字符串呀,对于一个字符串怎么能做isdigit的操作?isdigit不是应该在 ...

对啊,isdigit就是字符串的方法啊,是用来判断你输入的字符串是否是数字
  1. >>> dir(str)
  2. ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-6-28 09:58:28 | 显示全部楼层
  1. print("-----------------我爱鱼c工作室----------------")
  2. import random
  3. secret = random.randint(1,10)
  4. temp = input("不妨猜一下小甲鱼心里想的是几:")
  5. while temp.isalpha():
  6.     temp=input("请输入整数:")
  7. i = 0
  8. guess = int(temp)
  9. if guess == secret:
  10.     print("我草,你是小甲鱼心里的蛔虫吗?!")
  11.     print("哼,猜中了也没有奖励!")
  12. else:
  13.     i = i + 1
  14.     while guess != secret:
  15.         temp = input("猜错了,请再试一次吧:")
  16.         guess = int(temp)
  17.         i = i + 1
  18.         if guess == secret:
  19.             print("我草,你是小甲鱼心里的蛔虫吗?!")
  20.             print("哼,猜中了也没有奖励!")
  21.         else:
  22.             if i >= 3:
  23.                 print("错误已达上限")
  24.                 break
  25.             else:
  26.                 if guess > secret:
  27.                     print("大了")
  28.                 else:
  29.                     if guess < secret:
  30.                         print("小了")
  31. print("游戏结束,不玩啦!")
复制代码








  1. print("-----------------我爱鱼c工作室----------------")
  2. import random
  3. secret = random.randint(1,10)
  4. temp = input("不妨猜一下小甲鱼心里想的是几:")
  5. while not temp.isdigit:
  6.     temp=input("请输入整数:")
  7. i = 0
  8. guess = int(temp)
  9. if guess == secret:
  10.     print("我草,你是小甲鱼心里的蛔虫吗?!")
  11.     print("哼,猜中了也没有奖励!")
  12. else:
  13.     i = i + 1
  14.     while guess != secret:
  15.         temp = input("猜错了,请再试一次吧:")
  16.         guess = int(temp)
  17.         i = i + 1
  18.         if guess == secret:
  19.             print("我草,你是小甲鱼心里的蛔虫吗?!")
  20.             print("哼,猜中了也没有奖励!")
  21.         else:
  22.             if i >= 3:
  23.                 print("错误已达上限")
  24.                 break
  25.             else:
  26.                 if guess > secret:
  27.                     print("大了")
  28.                 else:
  29.                     if guess < secret:
  30.                         print("小了")
  31. print("游戏结束,不玩啦!")
复制代码



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

使用道具 举报

发表于 2019-6-28 10:08:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 10:26:43 | 显示全部楼层
newu 发表于 2019-6-28 10:08
https://fishc.com.cn/thread-62060-1-1.html

谢谢!那isalpha要怎么用呢?还有为啥temp.isdigit可以成立?temp=input()不是一个字符串吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-28 10:29:51 | 显示全部楼层
Jipeng_1208 发表于 2019-6-28 10:26
谢谢!那isalpha要怎么用呢?还有为啥temp.isdigit可以成立?temp=input()不是一个字符串吗?

isalpha() # 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
  1. >>> 'aaa'.isalpha()
  2. True
  3. >>> '123'.isalpha()
  4. False
  5. >>> 'abc.com'.isalpha()
  6. False
  7. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 10:32:05 | 显示全部楼层
newu 发表于 2019-6-28 10:29
isalpha() # 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

谢谢老师!那个temp是什么原因呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-28 10:37:06 | 显示全部楼层
Jipeng_1208 发表于 2019-6-28 10:32
谢谢老师!那个temp是什么原因呢?

没明白,temp就是你输入的字符串啊传进去的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 11:17:53 | 显示全部楼层
newu 发表于 2019-6-28 10:37
没明白,temp就是你输入的字符串啊传进去的啊

就是说temp=input()这里应该是一个字符串呀,对于一个字符串怎么能做isdigit的操作?isdigit不是应该在全为数字的情况下才会输出true吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-28 11:37:08 | 显示全部楼层
本帖最后由 jackz007 于 2019-6-28 11:38 编辑
Jipeng_1208 发表于 2019-6-28 11:17
就是说temp=input()这里应该是一个字符串呀,对于一个字符串怎么能做isdigit的操作?isdigit不是应该在 ...


    isdigit() 就是专门供字符串对象使用的方法

    str = '36845'
    if str . isdigit():
        print(str)  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-28 11:40:08 | 显示全部楼层    本楼为最佳答案   
Jipeng_1208 发表于 2019-6-28 11:17
就是说temp=input()这里应该是一个字符串呀,对于一个字符串怎么能做isdigit的操作?isdigit不是应该在 ...

对啊,isdigit就是字符串的方法啊,是用来判断你输入的字符串是否是数字
  1. >>> dir(str)
  2. ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 11:58:18 | 显示全部楼层
jackz007 发表于 2019-6-28 11:37
isdigit() 就是专门供字符串对象使用的方法

    str = '36845'

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

使用道具 举报

 楼主| 发表于 2019-6-28 11:58:59 | 显示全部楼层
newu 发表于 2019-6-28 11:40
对啊,isdigit就是字符串的方法啊,是用来判断你输入的字符串是否是数字

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 04:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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