|
练习最好的办法就是实战。拿真题来做,不是解析是赏析。带着欣赏的眼光看,题目不但不难,反倒增加不少乐趣。接下来揭开第十一届蓝桥杯青少组省赛python编程题的神秘面纱,我们来一一赏析,看难不难。历届真题及集训教程包个人搜集的历届真题和集训包教程,参见资源链接:https://download.csdn.net/download/qq8864/88943399选择题选择题都比较基础,比较简单,属于送分题。这个答案为A,在编程编程语言中没有所谓的char这个类型,尽管有字符这个概念,但是没有单独的字符类型。一般使用字符串如'a'即可表示一个字符。这个答案为D. 这个答案为D。 这个答案为C,list类型不能作为字典的key,其他的几个可以。 这个答案为A,“LIST”的第一个索引。编程第1题输入一个字符串,如果该字符串以er、Iy或者ing后缀结尾的,则删除该字符串后缀,并输出删除后的字符串,否者将原字符串输出。输入描述输入一个字符串输出描述输出删除后的字符串或原字符串样例输入:driver样例输出:driv题目赏析 第一题一般都是送分题,是最简单的。这个也不例外,只是简单的对字符串进行加工处理,去除末尾的指定要求的特殊字符。因此解法很简单:#encoding:utf-8#author:yangyongzhen#blog.csdn.net/qq8864n=input()ifn[-2:]=='er'orn[-2:]=='ly':print(n[:-2])elifn[-3:]=='ing':print(n[:-3])else:print(n)#或者ifn.endswith('er'):print(n[:-2])elifn.endswith('ly'):print(n[:-2])elifn.endswith('ing'):print(n[:-3])else:print(n)'运行运行写成一个小函数的形式,则可以这样:#encoding:utf-8#author:yangyongzhen#blog.csdn.net/qq8864n=input()defremove_suffix(str1):ifstr1.endswith('er'):returnstr1[:-2]elifstr1.endswith('ly'):returnstr1[:-2]elifstr1.endswith('ing'):returnstr1[:-3]else:returnstr1out=remove_suffix(n)print(out)'运行运行编程第2题因子,因子也叫因数,例如3*5=15,那么3和5是15的因子。同时15*1=15,那么1和15也是15的因子。1,3,5,15这四个因子是15的所有因子。完数:如果一个数等于不含它本身的其他因子之和,则称该数为"完数”。如6的因子有1,2,3,6,且1+2+3=6,因此6是完数。编程实现输入一个正整数N,输出小于N的所有完数及个数(个数前加*,例如:*2)。输入描述输入一个正整数N输出描述输出小于N的所有完数及个数样例输入:100样例输出:628*2 题目赏析这个题目也不难,其实就是一个简单的数学问题。用编程解决数学问题很常见,如果理解了这题的数学原理在编程中的体现(即建模,把数学语言通过建立一定的模型方便计算机处理),实现就简单了。比如求一个数的因子,如何求呢?既然是因子肯定能够被整除,因此可以使用%取余运算符,看余数是否为0,为0则除数肯定是这个数的因子。还有就是循环变量j不会超过i的一半,从而避免了计算i的所有因数,因此不用从头遍历到尾。这样遍历一遍就能得到这个数的所有因子。下面的代码使用了一个sum1用来记录对所有因子的求和。#encoding:utf-8#author:yangyongzhenn=input()n=int(n)count=0foriinrange(2,n):sum1=0forjinrange(1,i//2+1):ifi%j==0:sum1+=jifsum1==i:print(i)count+=1print('*'+str(count))'运行运行i//2表示i除以2的整数部分(在python2.2及以后的算术运算符“//”来表示整数除法,返回不大于结果的一个最大的整数。而“/”则单纯的表示浮点数除法)。在该代码中,i//2用于计算i的一半,然后用这个一半作为循环变量j的最大值。这样做是为了确保循环变量j不会超过i的一半,从而避免了计算i的所有因数。此外,sum1用于计算i的所有因数之和。当i的所有因数之和等于i时,i就是一个完全数。因此,该代码会在i的所有因数之和等于i时打印i。编程第3题题目描述:用户输入一个正整致a作为如图半圆的直径,同时作为如圈等腰直角三角形的直角边长度,求下图的阴影部分面积 。输入描述一个正整数(作为半圆的直径)输出描述图形阴影面积(保留2位小数)样例输入:10样例输出25.00题目赏析 这道题与其说是编程题,不如直接说是数学题,几何题。为啥说数学一定要学好,对编程最有利?因为编程也是逻辑思维,现实世界中遇到的难题,大都需要用到数学,再用计算机建模,设计相应的算法解决问题。三角形面积公式:S=(ah)/2(公式中a为三角形的底边,h为底边所对应的高)。圆形面积公式:S=n*r^2(公式中r为园的半径,n=3.14(圆周率))。上面的几何题,一眼就看出来了,阴影部分明显是三角形面积的一半。因此编码的工作最简单。(注意题目要求,要保留两位小数)#encoding:utf-8#author:yangyongzhena=input()a=int(a)s=0s=a*a/4print("%.2f"%s)'运行运行编程第4题在生活中,为保证信息安全,我们会把重要的信息进行加密后再发送给对方,对方需要通过相同的策路对信息进行解密,才能了解到传递的信息。我个把加密前的信息称为原文,将加密后的信息称为密文。有这样一种加密的策略:第一次加密策略是将明文中字母a加密为01,b加密为02,c加密为03,以此类推,x加密为24,y加密为25,z加密为26,空格不加密。然后在第一次加密的基出上进行二次加密,第二次加密是将数字0加密为27,数字1加密为28,以此类推,数字8加整为35、数字9加密为36,空格则加密为00。编程实现请输入一段明文,按照上述加密策略,输出对应密文。输入描述输入一段明文(只包含小写字母和空格)输出描述按照上述加密策略,输出对应密文样例输入:abc样例输出:27282729002730 题目赏析这已经是第四道题目了,发现竟也不难。其实就是一简单的替换。类似于查字典(密文手册),找到对应的依次按要求替换即可。因此,解法如下:首先设计一字典。设计字典可以每个都手写出来也行,比如设计字典d={'a':'01','b':'02'},但是这样有点儿繁琐,直接找到规律可以用个循环,就能输出字典了。如何设计输出字典呢?需要有点儿字符的基础知识,小写字母a,b,c,d,......z对应的十进制,依次是97,98,99....在python的解释器中可以直接输入chr()函数查看数字对应的ascII字母值,也可以使用ord()函数,输入字符查看其对应的10进制数值。python3内置函数hex()、oct()、bin()、chr()、ord().chr()将Ascii的值转换成对应字符,与之相对应的ord()函数则将字符转换为值。因此,字典的设计可以使用一个for循环,设计如下:#设计明文对应的密文字典d={}foriinrange(1,27):#小于10的前面补个0凑够两位ifi=inpt:print(solar_term[2])returnsolar_term[1]#没有找到节气,返回空字符串return''defmain():#获取输入日期year,month,day=input().split('*')#获取节气solar_term=get_solar_term(int(year),int(month),int(day))#输出节气print(solar_term)if__name__=='__main__':main() 输入2020*07*04,得到结果为XS。输入2020*06*21,输出结果为XZ。总结分析完一套蓝桥杯试题,感慨是真的不难,还蛮简单的。蓝桥杯青少组省赛Python中/高级组编程题,即便是最后一个大题,除了文字描述上啰嗦了一大堆,实现起来也不难。理解了题意,把其转换为编程实现即可。可能这是面向初学者和青少年,对于程序员来说这有点儿简单了。即便面向青少年,只要扎实基础,也能全做出来。题目难度和蓝桥杯全国赛中/高级组差不多,主要考察Python编程基础知识,包括数据类型、变量、运算符、函数、循环、条件判断等。还会考察一些常见的编程题型,比如字符串处理、数组处理、排序、查找、递归等。难度不算太难,只要掌握了Python编程基础知识,熟悉常见的编程题型,扎实数学基础,就能顺利通过考试,拿到满分。其他资源Python中不同进制的数字的表示以及转换的方式,一些函数的使用(hex,oct,bin函数详解,进制转换计算过程详解)_进制函数python_时代稍等198的博客-CSDN博客python输出字符的ascii码_mob64ca12e83232的技术博客_51CTO博客python3内置函数hex()、oct()、bin()、chr()、ord()_yyy9331的博客-CSDN博客GDBonlineDebugger|Compiler-Code,Compile,Run,DebugonlineC,C++
|
|