鱼C论坛

 找回密码
 立即注册
查看: 1918|回复: 5

[已解决]关于课后作业闰年计算

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

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

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

x
我有个逻辑问题, 用year/400 == int(year/400): 表达闰年的话, 因为int()是整形,那比400少的年份,全部会取0,就满足这个条件了, 然而并不是,例如:50.返回是闰年,但明显不是.   那结果是不是应该把后面的逻辑先提上来才对.
year=0
temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400):
    print(temp + ' 是世纪闰年!')
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + ' 是闰年!')
    else:
        print(temp + ' 不是闰年!')
最佳答案
2020-3-21 17:18:02
darrenkwan 发表于 2020-3-21 17:15
代码用这段吧. 上面的复制错了, 但做法是一样的

这样试试:
t = 3
year = 0
print('***u got', t, 'chance***')
print('pls type in a year: ', end=' ')
while t > 0:
    tmp = input()
    print('\n***u got', t - 1, 'chance left***')
    while not tmp.isdigit():
        tmp = input('error, pls type in a number: ')
    year = int(tmp)
    if year / 400 == int(year / 400):
        print('''这是世纪闰年.\ntry again: ''', end=' ')
    else:
        if year / 4 == int(year / 4) and year / 100 != int(year / 100):
            print('''这是普通闰年.\ntry again: ''', end=' ')
        else:
            print('''这不是闰年.\ntry again: ''', end=' ')
    t = t - 1
print('\ngame over')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-21 17:15:40 | 显示全部楼层
代码用这段吧. 上面的复制错了, 但做法是一样的
t=3
year=0
print('***u got', t, 'chance***')
print('pls type in a year: ',end=' ')
while t>0:
    tmp=input()
    print('\n***u got', t-1, 'chance left***')
    while not tmp.isdigit():
        tmp=input('error, pls type in a number: ')
        year=int(tmp)
    if year/400==int(year/400):
        print('''这是世纪闰年.\ntry again: ''', end=' ')
    else:
        if year/4==int(year/4) and year/100!=int(year/100):
            print('''这是普通闰年.\ntry again: ''', end=' ')
        else:
            print('''这不是闰年.\ntry again: ''', end=' ')
    t=t-1    
print('\ngame over')
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 17:18:02 | 显示全部楼层    本楼为最佳答案   
darrenkwan 发表于 2020-3-21 17:15
代码用这段吧. 上面的复制错了, 但做法是一样的

这样试试:
t = 3
year = 0
print('***u got', t, 'chance***')
print('pls type in a year: ', end=' ')
while t > 0:
    tmp = input()
    print('\n***u got', t - 1, 'chance left***')
    while not tmp.isdigit():
        tmp = input('error, pls type in a number: ')
    year = int(tmp)
    if year / 400 == int(year / 400):
        print('''这是世纪闰年.\ntry again: ''', end=' ')
    else:
        if year / 4 == int(year / 4) and year / 100 != int(year / 100):
            print('''这是普通闰年.\ntry again: ''', end=' ')
        else:
            print('''这不是闰年.\ntry again: ''', end=' ')
    t = t - 1
print('\ngame over')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 17:26:50 | 显示全部楼层

我的执行也没有问题, 不是格式问题. 只是因为int()的返回的机制使他们都取了0这个结果.算是一个bug吧
400以下的年份会与实际不符, 例如我输入50, 他显示是实际闰年, 实际上根本就不是闰年.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 17:37:41 | 显示全部楼层
darrenkwan 发表于 2020-3-21 17:26
我的执行也没有问题, 不是格式问题. 只是因为int()的返回的机制使他们都取了0这个结果.算是一个bug吧
40 ...

你为什么要判断除法的商呢?难道不应该判断求余的结果吗?
第十行的缩进写错了。导致year一直是0
t=3
year=0
print('***u got', t, 'chance***')
print('pls type in a year: ',end=' ')
while t>0:
    tmp=input()
    print('\n***u got', t-1, 'chance left***')
    while not tmp.isdigit():
        tmp=input('error, pls type in a number: ')
    year=int(tmp)#这里缩进写错了。
    if year%400==0:
        print('''这是世纪闰年.\ntry again: ''', end=' ')
    else:
        if year%4==0 and year%100 !=0:
            print('''这是普通闰年.\ntry again: ''', end=' ')
        else:
            print('''这不是闰年.\ntry again: ''', end=' ')
    t=t-1    
print('\ngame over')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 18:05:34 | 显示全部楼层
sunrise085 发表于 2020-3-21 17:37
你为什么要判断除法的商呢?难道不应该判断求余的结果吗?
第十行的缩进写错了。导致year一直是0

厉害呀, 找到错处了. 可惜最佳答案我给出去了.
开始怕自己写的代码找不出问题...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 04:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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