打卡第五天+三道练习题讲解

Source

 第一道题为有1,2,3,4的数字求不重合的各种组合并且求出组合总数.讲解如下:

对于这道题我们可以设置一个变量num=0,然后设置三个for循环在in range(1,5)分别找一个数,最后设置个if语句判断a!=b!,b!=c,a!=c来给num+=1加一次,然后继续循环for找一下个,低档题.

第二道题为求某个值,这个值为一个整数加100是完全平方数,再加168还是完全平方数,求这个值

对于这道题可以设置一个n=0的变量,用while语句判断判断<=168时n+1直到不符合条件,那个值就是所求的值,按数学思维的话是这样的一个值如果两个完全平方数的值相差等于168,那么这个值再减100就是所求的值,然而编程要考虑最坏的情况就是他是否是整数,这里面我没写,需要设置for i in range((n+1)**2)来查找从0到((n+1)**2)的所有值,然后判断这个值是否是整数,可以这样想,让小数为0就行啦,那么就用if i*0.5==int(i*0.5)  and (i-100)*0.5 == int((i-100)*0.5):      那么就直接print(i-100)得出 , 这题为中档题,代码简单但数学思维较强

第三题为写下某年某月某日,求那天是一年的第几天.

做这道题要用到设置函数(今天刚教还不太熟悉),先考虑存在闰年的情况,则是用def设置一个函数名和参数,然后用return取返回值保存数据,return后面语句为规则语句(自创名字)

设置一个变量i内容为各月的天数的列表,再设置一个res=0的可添加值,然后再设置year month  day的各种需要输入内容的语句,要用到input函数,且要整数int,然后前面写的闰年规则来了,用if语句判断函数是否是闰年,如果是那就给变量i[2]+=1表示给28天那月份的天份加1.然后用for循环语句循环range(month)表示从[0到12]代入到i[]的方空格里表示每个数(所以那个索引排序非常重要)然后res+=i[].最后用print(res+day)就可以得出啦. 该题属于中档偏高题(入门).del 和列表还有for循环if判断以及最后的操作用month输入的值当作索引,这题一定要会,很重要.