鱼C论坛

 找回密码
 立即注册
查看: 1892|回复: 12

[已解决]不知道哪里错了《零基础入门学习Python》第05讲| 课后测试题..

[复制链接]
发表于 2020-7-2 12:27:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 默默佩佩 于 2020-7-2 12:29 编辑
  1. import random
  2. secret = random.randint(1,10)
  3. print('---------我爱鱼c工作室----------')
  4. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  5. guess = int(temp)
  6. while type(temp) != type(1):
  7.     print('抱歉,输入不合法,',end='')
  8.     temp = input('请输入一个整数:')   
  9. while guess != secret:
  10.     temp = input('哎呀,猜错了请重新输入:')
  11.     guess = int(temp)
  12.     if guess == secret:
  13.         print('哇草,你是小甲鱼心里的蛔虫吗?')
  14.         print('哼,猜中了也没有奖励')
  15.     else :
  16.         if guess > secret:
  17.             print('哥,大了大了~~')
  18.         else :
  19.             print('嘿,小了!小了!!')
  20. print('游戏结束,不玩啦~~')
复制代码
最佳答案
2020-7-2 12:31:00
本帖最后由 Twilight6 于 2020-7-2 12:45 编辑



你的代码错在:input 返回的是字符串,所以 type(temp) 一定为 str,而永远不可能为  int ,所以这个条件永远不会成立,照成你的死循环

你可以用字符串方法  str.isdigit() 来判断字符串内是不是全是数字,你在学几课下去就会涉及到字符串方法的~:

isdigit() : 如果字符串只包含数字则返回 True,否则返回 False。

正确代码:
  1. import random
  2. secret = random.randint(1,10)
  3. print('---------我爱鱼c工作室----------')
  4. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

  5. while not temp.isdigit():
  6.     print('抱歉,输入不合法,',end='')
  7.     temp = input('请输入一个整数:')  
  8. guess = int(temp)
  9. while guess != secret:
  10.     temp = input('哎呀,猜错了请重新输入:')
  11.     guess = int(temp)
  12.     if guess == secret:
  13.         print('哇草,你是小甲鱼心里的蛔虫吗?')
  14.         print('哼,猜中了也没有奖励')
  15.     else :
  16.         if guess > secret:
  17.             print('哥,大了大了~~')
  18.         else :
  19.             print('嘿,小了!小了!!')
  20. print('游戏结束,不玩啦~~')
复制代码



在你的基础上进行部分改进哈:
  1. import random
  2. secret = random.randint(1,10)
  3. guess = 0
  4. print('---------我爱鱼c工作室----------')
  5. print("不妨猜一下小甲鱼现在心里想的是哪个数字:",end='')  # end 参数是 print 的默认参数,默认值是 \n 换行符 我们这里重新将end 赋值,让 print 函数不换行~
  6. while guess != secret:
  7.     temp = input()
  8.     while not temp.isdigit():
  9.         print('抱歉,输入不合法,', end='')
  10.         temp = input('请输入一个整数:')
  11.     guess = int(temp)
  12.     if guess > secret:
  13.         print('哥,大了大了~~')
  14.         print('请重新输入:',end='')
  15.     if guess < secret:
  16.         print('嘿,小了小了~~')
  17.         print('请重新输入:',end='')
  18. if guess == secret:
  19.     print('哇草,你是小甲鱼心里的蛔虫吗?')
  20.     print('哼,猜中了也没有奖励')
  21. print('游戏结束,不玩啦~~')
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 12:29:56 | 显示全部楼层
???
所以你的问题是啥??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 12:31:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-2 12:45 编辑



你的代码错在:input 返回的是字符串,所以 type(temp) 一定为 str,而永远不可能为  int ,所以这个条件永远不会成立,照成你的死循环

你可以用字符串方法  str.isdigit() 来判断字符串内是不是全是数字,你在学几课下去就会涉及到字符串方法的~:

isdigit() : 如果字符串只包含数字则返回 True,否则返回 False。

正确代码:
  1. import random
  2. secret = random.randint(1,10)
  3. print('---------我爱鱼c工作室----------')
  4. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

  5. while not temp.isdigit():
  6.     print('抱歉,输入不合法,',end='')
  7.     temp = input('请输入一个整数:')  
  8. guess = int(temp)
  9. while guess != secret:
  10.     temp = input('哎呀,猜错了请重新输入:')
  11.     guess = int(temp)
  12.     if guess == secret:
  13.         print('哇草,你是小甲鱼心里的蛔虫吗?')
  14.         print('哼,猜中了也没有奖励')
  15.     else :
  16.         if guess > secret:
  17.             print('哥,大了大了~~')
  18.         else :
  19.             print('嘿,小了!小了!!')
  20. print('游戏结束,不玩啦~~')
复制代码



在你的基础上进行部分改进哈:
  1. import random
  2. secret = random.randint(1,10)
  3. guess = 0
  4. print('---------我爱鱼c工作室----------')
  5. print("不妨猜一下小甲鱼现在心里想的是哪个数字:",end='')  # end 参数是 print 的默认参数,默认值是 \n 换行符 我们这里重新将end 赋值,让 print 函数不换行~
  6. while guess != secret:
  7.     temp = input()
  8.     while not temp.isdigit():
  9.         print('抱歉,输入不合法,', end='')
  10.         temp = input('请输入一个整数:')
  11.     guess = int(temp)
  12.     if guess > secret:
  13.         print('哥,大了大了~~')
  14.         print('请重新输入:',end='')
  15.     if guess < secret:
  16.         print('嘿,小了小了~~')
  17.         print('请重新输入:',end='')
  18. if guess == secret:
  19.     print('哇草,你是小甲鱼心里的蛔虫吗?')
  20.     print('哼,猜中了也没有奖励')
  21. print('游戏结束,不玩啦~~')
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-2 12:31:53 | 显示全部楼层
  1. import random
  2. secret = random.randint(1,10)
  3. print('---------我爱鱼c工作室----------')
  4. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
  5. guess = int(temp)
  6. while type(guess) != type(1):
  7.     print('抱歉,输入不合法,',end='')
  8.     temp = input('请输入一个整数:')
  9. while guess != secret:
  10.     temp = input('哎呀,猜错了请重新输入:')
  11.     guess = int(temp)
  12.     if guess == secret:
  13.         print('哇草,你是小甲鱼心里的蛔虫吗?')
  14.         print('哼,猜中了也没有奖励')
  15.     else :
  16.         if guess > secret:
  17.             print('哥,大了大了~~')
  18.         else :
  19.             print('嘿,小了!小了!!')
  20. print('游戏结束,不玩啦~~')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 13:10:11 | 显示全部楼层
第五行你的把转化数字类型的都给了guess,判断你又拿回之前的temp了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 14:42:54 | 显示全部楼层
直接在input接受的时候转成整形就好了

  1. import random
  2. secret = random.randint(1,10)
  3. print('---------我爱鱼c工作室----------')
  4. temp = int(input("不妨猜一下小甲鱼现在心里想的是哪个数字:"))
  5. guess = int(temp)

  6. while type(temp) != type(1):
  7.     print('抱歉,输入不合法,',end='')
  8.     temp = input('请输入一个整数:')   
  9. while guess != secret:
  10.     temp = input('哎呀,猜错了请重新输入:')
  11.     guess = int(temp)
  12.     if guess == secret:
  13.         print('哇草,你是小甲鱼心里的蛔虫吗?')
  14.         print('哼,猜中了也没有奖励')
  15.     else :
  16.         if guess > secret:
  17.             print('哥,大了大了~~')
  18.         else :
  19.             print('嘿,小了!小了!!')
  20. print('游戏结束,不玩啦~~')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 18:15:07 | 显示全部楼层

好像运行不出来啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 18:16:22 | 显示全部楼层
Twilight6 发表于 2020-7-2 12:31
你的代码错在:input 返回的是字符串,所以 type(temp) 一定为 str,而永远不可能为  int ,所以这个条 ...

不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 18:17:43 | 显示全部楼层
默默佩佩 发表于 2020-7-2 18:16
不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢



可以用try-except,但是你的错误捕获也还没学哈~最接近的就是用这个了,你学几节课就到了 很快的~~

加油吧~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 18:21:14 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-2 18:39 编辑

默默佩佩 发表于 2020-7-2 18:16
不用你说的这个isdigit()行吗,还没学呢,我看课后测试答案没用这个呢

111.png
我刚刚去看了下,第五讲已经学了 字符串方法了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-2 23:23:51 | 显示全部楼层
Twilight6 发表于 2020-7-2 18:21
我刚刚去看了下,第五讲已经学了 字符串方法了!

感谢,知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 23:24:38 | 显示全部楼层
1815702237 发表于 2020-7-2 14:42
直接在input接受的时候转成整形就好了

好像没运行出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 10:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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