鱼C论坛

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

[已解决]课后作业有疑惑

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

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

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

x
完善小游戏,为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环
问题是:
1)代码正常运行,但是当输入数字8时,没有打印出对应的提示,直接提示游戏结束
2)只有3次机会,但是实际输入四次数字才停止
代码如下:
  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 3
  4. while guess != 8 and i > 0:
  5.     temp = input("猜错了,请重新输入:")
  6.     guess = int(temp)
  7.     i = i - 1
  8.     if guess == 8:
  9.         print("我晕,你是小甲鱼心里的蛔虫吗?")
  10.         print("哼,猜中了也没有奖励")
  11.     else:
  12.         if guess > 8:
  13.             print("哥,大了大了~~")
  14.         else:
  15.             print("嘿,小了!小了!!")
  16. print("游戏结束,不玩啦~")
复制代码


请大佬们帮忙解惑,感谢
最佳答案
2020-7-20 13:54:52
这样试试:

  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 2
  4. while guess != 8 and i > 0:
  5.     temp = input("猜错了,请重新输入:")
  6.     guess = int(temp)
  7.     i = i - 1
  8.     if guess != 8:
  9.         if guess > 8:
  10.             print("哥,大了大了~~")
  11.         else:
  12.             print("嘿,小了!小了!!")
  13. if guess == 8:
  14.     print("我晕,你是小甲鱼心里的蛔虫吗?")
  15.     print("哼,猜中了也没有奖励")
  16. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-20 13:54:31 | 显示全部楼层
本帖最后由 Twilight6 于 2020-7-20 13:55 编辑


因为你有一次 input 是在 while 循环外输入的,改成这样就好了:


  1. guess = 0
  2. i = 3
  3. print("请输入一个数字:",end='')  # print 默认参数end ='\n' 换行符号 我们用end="" 覆盖他的默认值 就不会换行
  4. while guess != 8 and i > 0:
  5.     temp = input()
  6.     guess = int(temp)
  7.     i = i - 1
  8.     if guess == 8:
  9.         print("我晕,你是小甲鱼心里的蛔虫吗?")
  10.         print("哼,猜中了也没有奖励")
  11.     else:
  12.         if guess > 8:
  13.             print("哥,大了大了~~")
  14.         else:
  15.             print("嘿,小了!小了!!")
  16.         if i != 0:
  17.             print("猜错了,请重新输入:", end='') # print 默认参数end ='\n' 换行符号 我们用end="" 覆盖他的默认值 就不会换行
  18. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 13:54:52 | 显示全部楼层    本楼为最佳答案   
这样试试:

  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 2
  4. while guess != 8 and i > 0:
  5.     temp = input("猜错了,请重新输入:")
  6.     guess = int(temp)
  7.     i = i - 1
  8.     if guess != 8:
  9.         if guess > 8:
  10.             print("哥,大了大了~~")
  11.         else:
  12.             print("嘿,小了!小了!!")
  13. if guess == 8:
  14.     print("我晕,你是小甲鱼心里的蛔虫吗?")
  15.     print("哼,猜中了也没有奖励")
  16. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 13:58:45 | 显示全部楼层

最后那个if..没有else吗?不是说if...和else要搭配一起吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:00:51 | 显示全部楼层
Twilight6 发表于 2020-7-20 13:54
因为你有一次 input 是在 while 循环外输入的,改成这样就好了:

这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:02:15 | 显示全部楼层
勤奋的火柴头 发表于 2020-7-20 14:00
这个和提供的参考答案很像,参考答案中还插入了随机数的用法,而且定义的guess = 0是为什么呢?



guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错

因为 guess 是 while 的判断条件,而你的 guess 还没定义就不知道是什么东西,所以导致的报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:03:18 | 显示全部楼层
勤奋的火柴头 发表于 2020-7-20 13:58
最后那个if..没有else吗?不是说if...和else要搭配一起吗

if 不一定要跟 else 搭配在一起,单独一个 if 也行,但不能单独一个 else 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:07:53 | 显示全部楼层
前面你已经输入过一次,所以要把那次去掉:
  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 2
  4. while guess != 8 and i > 0:
  5.     temp = input("猜错了,请重新输入:")
  6.     guess = int(temp)
  7.     i = i - 1
  8.     if guess != 8:
  9.         if guess > 8:
  10.             print("哥,大了大了~~")
  11.         else:
  12.             print("嘿,小了!小了!!")
  13. if guess == 8:
  14.     print("我晕,你是小甲鱼心里的蛔虫吗?")
  15.     print("哼,猜中了也没有奖励")
  16. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:08:33 | 显示全部楼层
zltzlt 发表于 2020-7-20 14:03
if 不一定要跟 else 搭配在一起,单独一个 if 也行,但不能单独一个 else 。

那我换成这样写Ok吗?在if里插入一个while?
  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 2
  4. if guess == 8:
  5.     print("我晕,你是小甲鱼心里的蛔虫吗?")
  6.     print("哼,猜中了也没有奖励")
  7. else:
  8.     while guess != 8 and i > 0:
  9.         temp = input("猜错了,请重新输入:")
  10.         guess = int(temp)
  11.         i = i - 1
  12.         if guess > 8:
  13.             print("哥,大了大了~~")
  14.         else:
  15.             print("嘿,小了!小了!!")
  16. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 14:14:58 | 显示全部楼层
勤奋的火柴头 发表于 2020-7-20 14:08
那我换成这样写Ok吗?在if里插入一个while?

也可以,不过第 2、3 次猜中会直接打印 "游戏结束,不玩啦~",这样写就可以了:

  1. temp = input("请输入一个数字:")
  2. guess = int(temp)
  3. i = 2
  4. if guess == 8:
  5.     print("我晕,你是小甲鱼心里的蛔虫吗?")
  6.     print("哼,猜中了也没有奖励")
  7. else:
  8.     while guess != 8 and i > 0:
  9.         temp = input("猜错了,请重新输入:")
  10.         guess = int(temp)
  11.         i = i - 1
  12.         if guess == 8:
  13.             print("我晕,你是小甲鱼心里的蛔虫吗?")
  14.             print("哼,猜中了也没有奖励")
  15.         elif guess > 8:
  16.             print("哥,大了大了~~")
  17.         else:
  18.             print("嘿,小了!小了!!")
  19. print("游戏结束,不玩啦~")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:18:02 | 显示全部楼层
zltzlt 发表于 2020-7-20 14:14
也可以,不过第 2、3 次猜中会直接打印 "游戏结束,不玩啦~",这样写就可以了:

对哈,没有考虑到,不过如果这样改的话感觉代码更多了,还是你那个更好,感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-20 14:20:03 | 显示全部楼层
Twilight6 发表于 2020-7-20 14:02
guess = 0 是为了初始化,因为如果你没有定义这个 guess 的时候,代码运行到 while 循环时就会报错
...

定义明白了,后面的还需要再想想,感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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