必须掌握的知识:
int表示整形;
float表示浮点型;
str表示字符串;
bool是布尔类型,有ture跟false两个值;
附加知识:
s为字符串,s.isdigit(),判定所有的字符串都是数字,为真则返回ture,否则返回false;
isinstance, 内置函数,她有2个参数,第一个是带确定类型的数据,第二个是指定一个数据类型,该BIF会根据两个参数返回一个布尔类型的值,例如下图:
动手题目来啦~~
写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
编程思路:
1、判定用户输入的是数字而不是字母,不然程序会崩溃,我也会崩溃的~~
2、闰年的计算方法是:
a. 普通年能被4整除且不能被100整除的为闰年;(如2004年就是闰年,1901年不是闰年)
b.世纪年能被400整除的是闰年(如2000年是闰年,1900年不是闰年)
以下是实现代码:
temp = input("请输入一个年份:")
while not temp.isdigit(): #需要先判定用户输入的是个数字而不是字母
temp = input("抱歉,您的输入有误,请输入一个整数:")
year = int(temp) #将输入的数字转换为整数
#if isinstance(year/400,int): 不能用这个语句实现,因为python里面的减法运算默认都是浮点型
if year/400 == int(year/400): #在python里面浮点型跟整形的数字是可以同时进行对比运算的,这又是个坑~
print(temp + "是闰年!")
else:
if (year/4 == int(year/4)) and (year/100 != int(year/100)):
print(temp + "是闰年!")
else:
print(temp + "不是闰年!")
关于代码里面的2行语句,有必要拎出来单独说一下:
1、if isinstance(year/400,int):
这个语句本身就是个bug,因为python里面的减法默认都是浮点型,所以isinstance(year/400,int)返回的值永远都是false,这是个坑啊~~,不信看下实际运行图:
索性把加减乘除的所有可能全部试了一下,得到一下结果:
除了除法,其他运算只要数字不是浮点型,都是整形输出!!!
2、if year/
400 == int(year/400):
在python里面浮点型跟整形的数字是可以同时进行对比运算的,编程之初根本没有想到这一点,所以才有了isinstance的错误用法,又踩了一个坑啊~~
总结:
小白学习python,即使写不出代码,转而做代码搬运工的时候,遇到有疑问的语句还是要尽量释疑,看能不能用自己想到的语句代替;
如果运行出现错误,多问为什么,多试几次没准就找到头绪了,当然,也不要死磕~~~
虽然前期学习的进度会很慢很慢,但起码是一步一个脚印嘛(这个算是自我安慰,学编程时没少被家里的老程序猿鄙视脑袋瓜子迟钝~)