鱼C论坛

 找回密码
 立即注册
查看: 984|回复: 9

请问一下这个在if里面用布尔类型的值该怎么弄,我之前见过一次,但记不清了

[复制链接]
发表于 2018-12-23 01:04:55 | 显示全部楼层 |阅读模式

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

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

x
我输2000,但显示的是平年

year = input('Please enter a year: ')
while not year.isdigit():
    year = input('Sorry, please enter a integer: ')
test = int(year) / 4
if isinstance(year, int) == True:
    print ('This is a leap year.')
else:
    print ('That is a normal year.')

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

使用道具 举报

 楼主| 发表于 2018-12-23 01:07:44 | 显示全部楼层
我自己把操作符搞错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-23 01:16:12 | 显示全部楼层
还是不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-23 09:07:59 | 显示全部楼层
把==True去掉就可以了,isinstance的返回值就是bool类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-23 09:27:33 | 显示全部楼层
本帖最后由 heidern0612 于 2018-12-23 09:28 编辑

感觉你程序写的奇奇怪怪的,为什么要判定 isinstance(year, int) == True呢?

闰年的程序为能被4整除且能被400整除,你这么判定结果肯定不对。

你可以尝试下判定千禧年2000,你的程序输出是普通年。


照你的代码改了下,

  1. year = input('Please enter a year: ')

  2. while not year.isdigit():   
  3.     year = input('Sorry, please enter a integer: ')

  4. if (int(year) %4 == 0 ) and (int(year) % 400 == 0):
  5.     print ('This is a leap year.')
  6. else:
  7.     print ('That is a normal year.')
复制代码

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

使用道具 举报

 楼主| 发表于 2018-12-24 01:53:45 | 显示全部楼层
heidern0612 发表于 2018-12-23 09:27
感觉你程序写的奇奇怪怪的,为什么要判定 isinstance(year, int) == True呢?

闰年的程序为能被4整除且 ...

我知道输出是普通年,但我想知道我里面写的是可以除以4就是闰年,那为什么它还是判定为普通年呢?是因为不能用布尔类型的值做判定吗
(谢谢你的修改,我其实已经改好了,只是不知道为什么原来那个会判定错误)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 07:50:22 | 显示全部楼层
AVAN 发表于 2018-12-24 01:53
我知道输出是普通年,但我想知道我里面写的是可以除以4就是闰年,那为什么它还是判定为普通年呢?是因为 ...

  1. if isinstance(year, int) == True:
  2.     print ('This is a leap year.')
  3. else:
  4.     print ('That is a normal year.')
复制代码


以上代码,你的 isinstance(year,int)返回的是false,直接执行了else语句。

你的判定有问题,不管你输什么,结果都是normal year。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 14:10:52 | 显示全部楼层
因为从用户输入的,都是字符串。if 的结果肯定都是false
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-26 05:36:36 | 显示全部楼层
770686119 发表于 2018-12-24 14:10
因为从用户输入的,都是字符串。if 的结果肯定都是false

原来如此,谢谢,我懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-26 05:37:49 | 显示全部楼层
_谪仙 发表于 2018-12-23 09:07
把==True去掉就可以了,isinstance的返回值就是bool类型

是说if语句只要是True就会进入分支吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 15:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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