我甚至开始怀疑后面的文章副标题是不是应该都叫《令人头大的数学》,没有错,今天依然学的是数学。
今天第一节课学的是布尔值,简单来说就是“and”、“or”、“not”三个运算符,以及一个函数bool。
其中and是两边数字均为“真”时,输出true。比如 2>1 and 9>8,那么就会输出true,反之输出false。or是一边为真就行,比如2>1 or 2<1,结果依然是true。not就是杠精,你的结果是true,它就非输出个false,反之就非要输出个false。
bool函数就是给参数转化为布尔值并输出。比如bool(1>2)就输出false。目前还没发现这个函数的作用……
今天的第一个动手作业是判断输入的年份是不是闰年。
year = input('请输入一个年份:') #设定year变量的值为用户输入的值。
while not year.isdigit(): #循环验证:如果用户输入的值不是十进制数字。
year = input("抱歉,您的输入有误,请输入一个整数:") #提示用户输入有误,并重新输入
year = int(year) #将 year 转换成整数
if int(year) % int(400) == 0:# 如果 year 能被 400 整除
print("是闰年")# 打印 year 是闰年
else: #如果不能
if int(year) % int(4) == 0 and int(year) % int(100) !=0: # 如果 year 能被 4 整除,但不能被 100 整除(and表示两个条件要同时满足) #:
print("是闰年")# 打印 year 是闰年 #
else: #如果不能
print("不是闰年")# 打印 year 不是闰年 #
这个作业还是比较简单的,比较卡的地方还是字符串和值的对比上,我加了一堆int来定义变量。否则就会报错,无法对比。
TypeError: not all arguments converted during string formatting 或者是 TypeError: unsupported operand type(s) for -: 'str' and 'int'
第二节课就比较麻烦了,是比较运算符的优先级,天地良心,这玩意儿背起来怕是会死人吧。
不过我感觉还好,毕竟我就没打算真背下来,用到的时候再查吧……
作业内容是:
爱因斯坦曾出过这样一道有趣的数学题:
有一个长阶梯,若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。
请问阶梯有几级?
这个题目是我做的第一个与参考答案不一样题目。
#参考答案:
steps = 7
i = 1
FIND = False
while i < 100:
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
FIND = True
break
else:
steps = 7 * (i + 1)
i = i + 1
if FIND == True:
print('阶梯数是:', steps)
else:
print('在程序限定的范围内找不到答案!')
因为小甲鱼给的其实是填空题,所以有几个部分我就没弄懂有啥用。比如为什么要定义steps为7?else为什么要填入7*(i+ 1)?
后来看小甲鱼的答案才知道,因为7一定可以被整除,所以答案一定是7的倍数。直接定义7的倍数就好了。
but,我数学能力<=0啊!这么复杂我不会啊,所以我采用的是最蠢的+1法。
i = 1 #定义i为1
FIND = False #定义FIND为False
while i < 1000: #循环函数:当i小于1000的时候进行循环
if i % 2 == 1 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and i % 7 == 0: # 假如i满足这些条件
FIND = True #FIND的值为True
break #循环结束
else: #如果不满足条件
print(i + 1)# 显示当前i的值是多少
i = i + 1 #i+1继续循环
if FIND == True: #如果上述循环结论为True
print('阶梯数是:', i) #打印阶梯数是: + i的值
else: #如果上述循环结束还没有找到满足条件的值
print('在程序限定的范围内找不到答案!') #显示在程序限定的范围内找不到答案
虽然说答案是一样的,但很显然,人家的计算更高效。以前上学的时候,计算机老师说:“不管用什么办法,总之能实现就行。”这句话只能说理论上没错,但实际上如果有更高效的方式,又何必用歪门邪道,祈祷瞎猫碰到死耗子呢?
总之,今天的课相对还是比较简单的(如果运算符优先级那张表……)。同时也明确感受到,越到后面,薄弱的数学基础就越拖后腿。这就有点难受了。
胭惜雨
2020-12-20