鱼C论坛

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

[已解决]关于零基础入门学习python第五讲的type怎么加??

[复制链接]
发表于 2018-3-6 17:08:52 | 显示全部楼层 |阅读模式

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

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

x
  1. import random
  2. secret = random.randint(1,10)
  3. temp = input("猜一下是一到十哪个数字:")
  4. guess = int(temp)
  5. while type(temp) != type(1):
  6.     print("抱歉,输入不合法,",end="")
  7.     temp = input("请输入一个整数")
  8. i = 1
  9. while guess != secret and i < 3:
  10.     temp = input("哎呀猜错了,重新猜一下吧:")
  11.     guess = int(temp)
  12.     i = i + 1

  13.     if guess == secret:
  14.             print("卧槽,这么厉害猜中了")
  15.             print("哼,猜中也没有奖励。")
  16.     else:
  17.         if guess > secret:
  18.             print("大了,大了!")
  19.         else:
  20.             print("小了,小了!")
  21. print("游戏结束,不玩了")
复制代码

到底如何添加,添在哪一行,懵逼中,太难了
最佳答案
2018-3-8 16:32:21
本帖最后由 heqianqian 于 2018-3-8 16:33 编辑

首先,对 input函数做一个解释:在Python3 中 input() 函数接受一个标准输入数据,返回为 string 类型。所以type(temp)返回的值永远是 string 类型(即str),请看下图 JO$R4EBEWZZT7CQ]73S7YRX.jpg
其次,type(1)的返回值是int类型。
所以如果temp的值是由 input 赋值时,type(temp) 将永远也不等于 type(1),所以添加到哪也不对,也就不会执行你想要执行的语句。
补充,建议使用以下语句~
while not temp.isdigit():
    print('输入有误,',end='')
    temp = input('请重新输入一个数字:')
type语句其实会有更复杂的用法,在你后面学习的过程中将会遇见!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-6 17:21:01 | 显示全部楼层
input返回的是一个str,你需要用str的内置函数来判断其字符是否为数字
把第5行改成这样
while not temp.isdigit():
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-6 17:40:34 | 显示全部楼层
BngThea 发表于 2018-3-6 17:21
input返回的是一个str,你需要用str的内置函数来判断其字符是否为数字
把第5行改成这样
while not temp.i ...

试过了,不行啊,还是一脸懵逼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 17:44:28 | 显示全部楼层
Python 2.7 中input可以根据数据类型自动调整,而py3以上版本这个功能丢弃了,在input()外围加外eval()函数即可,
i.e. eval(input("猜一下是一到十哪个数字:"))

希望对你有帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-6 17:53:16 | 显示全部楼层
ouyunfu 发表于 2018-3-6 17:44
Python 2.7 中input可以根据数据类型自动调整,而py3以上版本这个功能丢弃了,在input()外围加外eval()函数 ...

具体哪一行吗??一脸懵逼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 18:19:13 | 显示全部楼层
让改变发生 发表于 2018-3-6 17:53
具体哪一行吗??一脸懵逼

把所有的input()外层加一个eval(),你的代码是第3,7,10行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 21:41:03 From FishC Mobile | 显示全部楼层
让改变发生 发表于 2018-3-6 17:40
试过了,不行啊,还是一脸懵逼

把第4行放到第8行前面去
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 23:33:54 | 显示全部楼层
第八行插一句guess = int(temp)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 15:41:20 | 显示全部楼层
首先没有鱼币不知道题目,但是运行你这个代码后,type一直出错
看了一下while type(temp) != type(1):    改成while type(guess) != type(1):就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 22:14:57 | 显示全部楼层
吴阿汤 发表于 2018-3-7 15:41
首先没有鱼币不知道题目,但是运行你这个代码后,type一直出错
看了一下while type(temp) != type(1):     ...

还是不行啊,输入字母还是会崩溃啊,你确定你试验过了???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 10:44:41 | 显示全部楼层
本帖最后由 吴阿汤 于 2018-3-8 21:02 编辑
  1. import random
  2. secret = random.randint(1,10)
  3. temp =input("猜一下是一到十哪个数字:")
  4. while not temp.isdigit():
  5.     print("抱歉,输入不合法,",end="")
  6.     temp = input("请输入一个整数")
  7. guess = int(temp)
  8. i = 1
  9. while guess != secret and i < 3:
  10.     temp = input("哎呀猜错了,重新猜一下吧:")
  11.     while not temp.isdigit():
  12.         print("抱歉,输入不合法,",end="")
  13.         temp = input("请输入一个整数")
  14.     guess = int(temp)
  15.     i = i + 1

  16.     if guess == secret:
  17.             print("卧槽,这么厉害猜中了")
  18.             print("哼,猜中也没有奖励。")
  19.     else:
  20.         if guess > secret:
  21.             print("大了,大了!")
  22.         else:
  23.             print("小了,小了!")
  24. print("游戏结束,不玩了")
复制代码


首先,因为input()返回的是一个str类型,所以使用while not temp.isdigit():来判断是否是数字类型
然后因为每次循环后都需要重新input,所以在后面的循环中再添加一遍while not temp.isdigit():来判断是否是数字类型,即每一次都要重新检查。
最后发现这个还有不完善的地方,即第一次输入数字的时候没有比较大小,解决方法是在循环上面加上if else 的判断条件,和下面一样的。代码是这样的:
  1. import random
  2. secret = random.randint(1,10)
  3. temp =input("猜一下是一到十哪个数字:")
  4. while not temp.isdigit():
  5.     print("抱歉,输入不合法,",end="")
  6.     temp = input("请输入一个整数")
  7. guess = int(temp)
  8. if guess == secret:
  9.         print("卧槽,这么厉害猜中了")
  10.         print("哼,猜中也没有奖励。")
  11. else:
  12.     if guess > secret:
  13.         print("大了,大了!")
  14.     else:
  15.         print("小了,小了!")
  16. i = 1
  17. while guess != secret and i < 3:
  18.     temp = input("哎呀猜错了,重新猜一下吧:")
  19.     while not temp.isdigit():
  20.         print("抱歉,输入不合法,",end="")
  21.         temp = input("请输入一个整数")
  22.     guess = int(temp)
  23.     i = i + 1

  24.     if guess == secret:
  25.             print("卧槽,这么厉害猜中了")
  26.             print("哼,猜中也没有奖励。")
  27.     else:
  28.         if guess > secret:
  29.             print("大了,大了!")
  30.         else:
  31.             print("小了,小了!")
  32. print("游戏结束,不玩了")

复制代码
然后发现上面和循环结构代码差不多,是否能够合并呢?有待研究。
   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 16:32:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heqianqian 于 2018-3-8 16:33 编辑

首先,对 input函数做一个解释:在Python3 中 input() 函数接受一个标准输入数据,返回为 string 类型。所以type(temp)返回的值永远是 string 类型(即str),请看下图 JO$R4EBEWZZT7CQ]73S7YRX.jpg
其次,type(1)的返回值是int类型。
所以如果temp的值是由 input 赋值时,type(temp) 将永远也不等于 type(1),所以添加到哪也不对,也就不会执行你想要执行的语句。
补充,建议使用以下语句~
while not temp.isdigit():
    print('输入有误,',end='')
    temp = input('请重新输入一个数字:')
type语句其实会有更复杂的用法,在你后面学习的过程中将会遇见!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 05:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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