鱼C论坛

 找回密码
 立即注册
查看: 1703|回复: 2

[已解决]005课动动手

[复制链接]
发表于 2017-4-19 22:24:28 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼的代码是:
  1. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  2. # not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
  3. while not isinstance(temp, int):
  4.     print("抱歉,输入不合法,", end='')
  5.     temp = input("请输入一个整数:")
复制代码

为什么我复制到新窗口中就跑不对呢?
不管我输入什么类型的数据,总显示输入不合法。
最佳答案
2017-4-19 23:03:01
input()这个函数得到的值,都是字符类型的
  1. >>> a = input()
  2. 1
  3. >>> a
  4. '1'
  5. >>> type(a)
  6. <class 'str'>
复制代码


那么后面的这个判断
  1. isinstance(temp, int):
复制代码

temp是字符,不是int类型,当然会一直返回false了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-19 23:03:01 | 显示全部楼层    本楼为最佳答案   
input()这个函数得到的值,都是字符类型的
  1. >>> a = input()
  2. 1
  3. >>> a
  4. '1'
  5. >>> type(a)
  6. <class 'str'>
复制代码


那么后面的这个判断
  1. isinstance(temp, int):
复制代码

temp是字符,不是int类型,当然会一直返回false了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-20 12:08:54 | 显示全部楼层
本帖最后由 自然水 于 2017-4-20 12:10 编辑

input 接收到的,都是 “字符”或者“字符串”

要进行isinstance的数据类型判断:(不是int类型就循环)
但是你程序中的temp类型一直是str

所以要把temp先转变一下类型:

比如在input的时候就进行:
temp = int(input("不妨猜一下小甲鱼现在心里想的是哪个数字:"))

  1. >>> temp = int(input("不妨猜一下小甲鱼现在心里想的是哪个数字:"))
  2. 不妨猜一下小甲鱼现在心里想的是哪个数字:5
  3. >>> temp
  4. 5
  5. >>> type(temp)
  6. <class 'int'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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