鱼C论坛

 找回密码
 立即注册
查看: 4399|回复: 4

关于猜数字小游戏的一点问题

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

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

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

x
1.
import random
import os
answer = random.randint(1,10)
print("***********\n 猜数字游戏 \n***********")
guess = int(input("输入你猜的数字(1~10):"))
i = 0
while guess != answer and i < 2:
      i+=1     
      if guess > answer:
            print("大了,大了~~~")
            guess = int(input("再试试:"))
      if guess < answer:
            print("太小了~~~")
            guess = int(input("再试试:"))
      if guess == answer:
            print("\n恭喜您猜对了!\n然而并没有什么卵用!")
            input("按任意键结束~")

os.system('cls')
print("\n**************\n* Game Over! *\n**************")
input("按任意键结束~")
当程序是这样时运行正常,如图

2.
import random
import os
answer = random.randint(1,10)
print("***********\n 猜数字游戏 \n***********")
guess = int(input("输入你猜的数字(1~10):"))
i = 0
while guess != answer and i < 2:
      i+=1     
      if guess > answer:
            print("大了,大了~~~")
            guess = int(input("再试试:"))
      elif guess < answer:
            print("太小了~~~")
            guess = int(input("再试试:"))
      elif guess == answer:
            print("\n恭喜您猜对了!\n然而并没有什么卵用!")
            input("按任意键结束~")

os.system('cls')
print("\n**************\n* Game Over! *\n**************")
input("按任意键结束~")
当用elif时,运行结果如下

***********
猜数字游戏
***********
输入你猜的数字(1~10):5
太小了~~~
再试试:8

**************
* Game Over! *
**************
按任意键结束~
没有打印  print("\n恭喜您猜对了!\n然而并没有什么卵用!")

请问这是什么原因?

猜对时打印出来的字

猜对时打印出来的字

没有打印

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

使用道具 举报

发表于 2015-7-13 17:35:52 | 显示全部楼层
例一可以正常实现是因为第二个 if 判断执行后接收输入,会被第三个 if 语句继续判断,成功,打印。

例二由于是使用 elif 的形式,在第二个 elif 执行后接收输入,直接跳到 while 判断那里,符合条件,退出循环。因此没有执行到第三个 elif 语句。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-13 20:11:33 From FishC Mobile | 显示全部楼层
小甲鱼 发表于 2015-7-13 17:35
例一可以正常实现是因为第二个 if 判断执行后接收输入,会被第三个 if 语句继续判断,成功,打印。

例二 ...

先谢谢小鱼儿的解答:big
追问:例一里面把最后一个if 提到最前面也不会打印,是怎么回事呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-13 21:35:40 From FishC Mobile | 显示全部楼层
如果放到最前面,而且猜对了,那么会直接跳出while循环,看看你的循环条件。如果放到最后,而且不是一次猜对,经过前两次IF的判断和重新输入后就会再到第三个IF判断是不是猜对了,判断完才跳出循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-13 22:46:13 | 显示全部楼层
戴宇轩 发表于 2015-7-13 21:35
如果放到最前面,而且猜对了,那么会直接跳出while循环,看看你的循环条件。如果放到最后,而且不是一次猜 ...

可是放在最后面也应该直接跳出while循环啊,可是放在最后它打印出来了,放在最前面没打印出来。而且如果我把循环次数调大一点结果也是一样:big
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-16 19:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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