鱼C论坛

 找回密码
 立即注册
查看: 1066|回复: 23

第二个if是不是错了

[复制链接]
发表于 2018-12-1 00:40:21 | 显示全部楼层 |阅读模式

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

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

x
图1:第二个if是不是错了
图2:我自己写的,有问题吗?
IMG_0088.JPG

图2

图2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-1 01:44:17 | 显示全部楼层
首先你能不能把图编辑好了再发,这些我看到很累呢
1.这个if没有用错啊,是可以这样写的,因为能进入这个循环的条件就是guess!=temp ,第一个if和else来判断不等的情况,第二个if是判断相等的情况,相等的话自然就不会再进入循环,也就退出了循环。
2,你这样写也是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-1 08:40:48 | 显示全部楼层
不好意思。
但是按照图一这么写,你说第二个if是判断相等的情况,那第二if不是一点用都没有吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 09:03:27 | 显示全部楼层
图一执行过程:
生成随机数,询问用户;
如果随机数不同,进入循环;
再次询问;
如果大了,说大了;
否则,说小了;
再判断是否相等:
如果是,说正确,然后循环条件不对,退出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 09:19:35 | 显示全部楼层
都没错啊,殊途同归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 09:31:52 | 显示全部楼层
图一的写错了吧,如果guess和secret相等根本就进不到while循环里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-12-1 10:53:58 | 显示全部楼层
fan1993423 发表于 2018-12-1 01:44
首先你能不能把图编辑好了再发,这些我看到很累呢
1.这个if没有用错啊,是可以这样写的,因为能进入这个循 ...

如果照图一这么写,第二个if里的语句就不会输出了啊,第二个if应该顶格写吧.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-1 11:01:20 | 显示全部楼层
ysp1992 发表于 2018-12-1 10:53
如果照图一这么写,第二个if里的语句就不会输出了啊,第二个if应该顶格写吧.

我觉得是这样的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 12:21:30 | 显示全部楼层
图一的可以正常运行,只是图一在不满足循环条件的时候不会在答案正确时显示第17行和第18行的语句,但是这并不代表他写错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 12:24:24 | 显示全部楼层
hualuo 发表于 2018-12-1 08:40
不好意思。
但是按照图一这么写,你说第二个if是判断相等的情况,那第二if不是一点用都没有吗?

如果第一次输入就相等的话,不光第二个if没用到,连整个while循环都没用到,难不成没用到就说明她一点用都没有嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 12:48:43 | 显示全部楼层
图1里第二个if本来就是循环内部的if,只有当满足循环条件后,当guess与secret相等时才会触发第二个if,如果一开始就没有满足循环条件的话,自然就不会触发了,怎么这么写在你这儿就成了错了的呢?
顺便告诉你如果第二个顶格写会怎样吧。程序会出现bug,当满足循环条件后即使输入正确也会强制执行一次else语句,而像图1那样写则不会有bug。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 12:54:03 | 显示全部楼层
你自己的版本也是可以的,不过在我看来还是太繁琐,给你看看我当初写的版本吧。
  1. from random import randint

  2. secret = randint(1, 10)
  3. while True:
  4.     answer = int(input("Enter a number: "))
  5.     if answer < secret:
  6.         print("This number is less than secret.")
  7.     elif answer > secret:
  8.         print("This number is greater than secret.")
  9.     else:
  10.         print("Correct!")
  11.         break;
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 20:53:45 | 显示全部楼层
hualuo 发表于 2018-12-1 11:01
我觉得是这样的,

这是什么书?是小甲鱼自己写的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 23:45:09 | 显示全部楼层
hualuo 发表于 2018-12-1 08:40
不好意思。
但是按照图一这么写,你说第二个if是判断相等的情况,那第二if不是一点用都没有吗?

第二个if的作用就是说如果两个数相等,那么就打印这两句话,你可以不要,但就不会显示那两句话,小甲鱼的是比较基础,是为了照顾零基础的人,所以写的也比较繁琐但是更容易理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 23:52:03 | 显示全部楼层
ysp1992 发表于 2018-12-1 10:53
如果照图一这么写,第二个if里的语句就不会输出了啊,第二个if应该顶格写吧.

怎么不会输出,我把逻辑在给你们说一下,这是个系统随机生成一个1到10的数,然后用户猜一个数,小甲鱼的程序是这个意思,如果第一次就猜中了,那么就不会进入while循环,就直接打印最后一句游戏结束,如果没猜中,那么就进入了while循环,那么这时候就会就用户再猜一个数,这个数可大可小可等,如果大就说显示大了,如果小就会显示小了,如果等就会显示猜中了那两句话,但是如果小或者大,它依然满足while循环的条件,也就是guess!=secret这个条件,也就继续让用户猜数,游戏继续,如果是等,显示完那两句话后就不满足条件,就会退出循环,最后把那句游戏结束打印出来。完事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 09:14:05 | 显示全部楼层
fan1993423 发表于 2018-12-1 23:52
怎么不会输出,我把逻辑在给你们说一下,这是个系统随机生成一个1到10的数,然后用户猜一个数,小甲鱼的 ...

如果你输入的第二个数满足相等,那么它也会满足   else:“嘿,小了小了~~~”,那么它的输出就会多这一句
QQ截图20181202090759.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 10:52:11 | 显示全部楼层
hualuo 发表于 2018-12-2 09:14
如果你输入的第二个数满足相等,那么它也会满足   else:“嘿,小了小了~~~”,那么它的输出就会多这一句

我懂你的意思了,我刚才仔细看了,这里小甲鱼的代码确实有问题,我没买书,我都是在论坛里学的,记得当时好像没这种错误,它这里如果第二次猜中了的话,就会显示小了还会显示猜中了,确实有问题,不错,你能发现这个问题。如果要实现小甲鱼的代码的话,改成if,elif,else就行了
  1. from random import randint
  2. s=randint(1,10)
  3. g=int(input('输入'))
  4. while g!=s:
  5.     g=int(input('重新输入'))
  6.     if g>s:
  7.         print('大了')
  8.     elif g<s:
  9.         print('小了')
  10.     else:
  11.         print('猜中了')
  12. print('结束')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 11:30:49 | 显示全部楼层
fan1993423 发表于 2018-12-2 10:52
我懂你的意思了,我刚才仔细看了,这里小甲鱼的代码确实有问题,我没买书,我都是在论坛里学的,记得当时 ...

谢谢,我也在学习,以前大学学过一点点,最近看到书上有点疑惑,感谢大家的解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 11:36:29 | 显示全部楼层
照小甲鱼的代码,如果第一次输入的数刚好是正确的,就会直接输出游戏结束不玩了
while循环里的第二个if语句要想被输出,第一个输入必须是错误的,然后进入到while循环里面,再输入正确的数,才会触发第二个if语句输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 11:45:01 | 显示全部楼层
这是按照小甲鱼的代码输出的,如果输入正确,那句小了也会输出
1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 18:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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