十一界蓝桥杯青少年Python中/高级组省赛试题详解——编程题1~3
字符串实际是一个列表,因此可以从后往前访问字符串每一个字符,这样倒着匹配,最后截取字符串。
程序代码:
运行结果:
数学分析:连接直角顶点与半圆和斜边的交点,那么以这个交点为顶点的角一定是直角(与直径相对的圆周角是直角)。那么大等腰直角三角形被斜边上的高分开为两个全等的等腰直角三角形,从而得到半圆被小直角等腰三角形所割剩下的两个月形相等,根据割补法,阴影部分的面积是大直角三角型面积的一半。
程序代码:
运行结果:
浮点数打印可以用“%f”的格式,如果要控制小数点后2位,就要在“%”与“f”之间加入“.02”;同理要保留3位,则是“.03”。
数学分析:数的次大因数不会超过数的半数,因此从2到半数测试因数,这些因数和1放进一个列表中,检查列表和是否等于这个数,就可以判定是不是完全数。另外,每次找到的是一对因数,自变量因数不断增大,因变量因数不断减少,当自变量因数达到或超过前一个因变量因数时,查找就结束了。
程序代码:
运行结果:
一个大于1的正整数,如果除了1和它本身能整除外,没有别的因数,这个数就是质因数。一个大于1的正整数,如果不是质数,它就是合数。编写程序判定一个正整数是质数还是合数,如果是合数,列出它的所有质因数,相同质因数要重复列出。算法逻辑如下:
(1)用质数筛类似的方法生成2到这个数的半数所有质数。由于最小的质因数是2,所以最大因数不会超过这个数的半数。质数筛方法的原理是:1是数的单位,不是质数也不是合数,划除;2是质数,保留,然后从3开始划除2的倍数;然后从3开始找到第一个没有被划除的数3是质数,保留,然后从4开始划除3的倍数;如此类推直到达到或超过截止数的平方根整数值为止,剩下的数就是质数。这里不直接采用质数筛方法,而是采用质数筛的原理,把2,3放到质数表中,从4开始,检查每个数是否是质数列表中的倍数,如果不是就加到质数表中,直到超过半数为止。采用for break else句型语法,语法解释如下:
(2)用质数表递归法分解质因数。如果结果质因数表为空,这数是质数,否则是合数,这列表就是它的所有质因数(相乘的积等于这个数)。质数表分解质因数的递归过程:从质数表第一个质数开始,检查这个数是否是这个质数的倍数,如果是就把这个质数加到质因数表中,然后用这个数与这个质数的商和同样的列表下标递归调用函数;如果不是,就用这个数和列表下标加1递归调用函数;当列表下标等于列表长度时结束。如下图所示。
请在下面的程序代码中“#”号后添加解释,使它更加容易被人看懂。
运行结果:

添加 家长论坛微信
全部 0条评论