lzymm1 发表于 2020-2-5 14:31:04

【Python新手求助】关于判断给定年份是否闰年

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 + ' 不是闰年!')
关于这段代码的判断,除了这种方法还有没有别的简单方法可以用来判断?这种方法有点理解不来,像是if year/400 == int(year/400)这种的感觉找不到切入点去理解,虽然我知道是因为如果不是整数两边结果就会不一样就会输出False。有没有其他的简单方法?能不能用isinstance()?如果可以,要怎么用?

lzymm1 发表于 2020-2-5 14:31:51

用这种方法感觉就像是在背一样,没有真正理解

一个账号 发表于 2020-2-5 14:35:42

本帖最后由 一个账号 于 2020-2-5 15:05 编辑

用取运算符符"%",更简单:

year = input('请输入一个年份:')

while not year.isdigit():
    year = input("抱歉,您的输入有误,请输入一个整数:")

year = int(year)

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(year, '年是闰年!')
else:
    print(year, '年不是闰年!')

zltzlt 发表于 2020-2-5 14:45:04

这样不太好理解,可以按照 3 楼的方法用取余运算符。

lzymm1 发表于 2020-2-5 14:52:52

temp = input("请输入一个年份:")
while not temp.isdigit():
    temp = ("您的输入有误,请重新输入一个整数:")

year = int(temp)
if (year/4) == int(year/4) and (year/100) == float(year/100):
    print(temp +"年是普通闰年.")
if (year/100) == int(year):
    print(temp +"年是世纪闰年.")

为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?
temp = input("请输入一个年份:")
while not temp.isdigit():
    temp = ("您的输入有误,请重新输入一个整数:")

year = int(temp)
if (year/4) == int(year/4) and (year/100) == float(year/100):
    print(year +"年是普通闰年.")
if (year/100) == int(year):
    print(year +"年是世纪闰年.")

lzymm1 发表于 2020-2-5 14:54:37

lzymm1 发表于 2020-2-5 14:52
为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?

。。。。。不好意思刚才没有刷新过来,没看见已经解决了就没发在另外的帖子

lzymm1 发表于 2020-2-5 15:02:15

一个账号 发表于 2020-2-5 14:35
用取余操作符"%",更简单:

取余运算符是怎么用的?

一个账号 发表于 2020-2-5 15:03:46

lzymm1 发表于 2020-2-5 14:52
为什么在拼接字符串的时候用temp可以正常拼接,而用year却不行?

因为字符串拼接是字符串与字符串,而 year 是整形,不能拼接

一个账号 发表于 2020-2-5 15:07:49

lzymm1 发表于 2020-2-5 15:02
取余运算符是怎么用的?

就是取余数,比如:
>>> 1 % 2   # 1 不能整除 2,余 1
1
>>> 5 % 2      # 5 除以 2 等于 2,余 1
1

lzymm1 发表于 2020-2-5 15:18:29

一个账号 发表于 2020-2-5 15:07
就是取余数,比如:

懂了,谢谢

lzymm1 发表于 2020-2-5 15:19:27

一个账号 发表于 2020-2-5 15:07
就是取余数,比如:

在除数大于被除数的时候,就不会进行运算而保留被除数?

zltzlt 发表于 2020-2-5 16:22:21

lzymm1 发表于 2020-2-5 15:19
在除数大于被除数的时候,就不会进行运算而保留被除数?

不是,也是按照正常的除法运算。

1 除以 2,商 0 余 1。
页: [1]
查看完整版本: 【Python新手求助】关于判断给定年份是否闰年