[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第32讲。
平方数键值对,本题是2020年10月30日举办的第11届蓝桥杯青少组Python编程国赛真题,题目要求使用字典输出1到n的所有键值对。
先来看看题目的要求吧。
提示信息:
平方是一种运算,比如:a的平方表示a x a。
例如:2的平方为4(也就是2*2的积)
例如:4的平方为16(也就是4*4的积)
编程实现:
输入一个正整数n,将1到n之间所有正整数(包含1和n)作为python字典的键,将正整数的平方作为对应键的值,组成n个键值对。输出1到n的所有键值对(格式要求:每个键值对之间以英文逗号隔开,输出的内容前后中间不能有空格及大括号)。
输入描述:
输入一个正整数n
输出描述:
输出1到n的所有键值对(按照编程实现要求输出)
样例输入:
5
样例输出:
1:1,2:4,3:9,4:16,5:25
这是一道格式化输出的题目,涉及到的知识点主要包括循环和输出格式控制。
根据题目的要求,需要先构造一个字典,将数字n作为键,n * n作为对应的值,然后按要求输出。
实际上,从输出的结果来看,不需要字典也是可以的。这里的难点是怎么让键值对以逗号隔开,但最后一个键值对是没有逗号的。
通常有两种思路来实现,一是先处理前面n-1个键值对,然后再单独处理最后一个键值对;二是将键值对按要求保存到列表中,然后再使用join()函数进行连接。
对于思路一,要充分利用print()函数的两个参数,如下:
sep参数:设置分隔对象的符号,默认是空格;
end参数:设置输出语句以什么结尾,默认值是换行符;
对于思路二,则需要掌握join()函数的用法,如下:
str.join(sequence)
该函数以str作为分隔符,将sequence中所有的元素(字符串表示)合并为一个新的字符串。
思路有了,接下来,我们就进入具体的编程实现环节。
根据上面的思路分析,我们使用两种方法来编写程序:
利用print()函数;
妙用join()函数;
1. 利用print()函数
根据前面的思路分析,编写代码如下:
代码不难,简单说明两点:
1). 题目要求从1开始,因此range函数需要两个参数,第一个参数为1;
2). 在Python编程中,运算符"**"表示乘方运算,也可以使用 i * i。
2. 妙用join()函数
根据思路分析,我们编写代码如下:
简单说明两点:
1). res列表用于保存键值对字符串,字符串的格式为"1:1";
2). 在构造字符串的时候,需要使用str()函数将整数转成字符串再进行连接。
输入数字5,结果如下:
输入数字8,结果如下:
至此,整个程序就全部完成了,你也可以输入不同的数字来测试效果
至此,整个程序就全部完成了,你也可以输入不同的数字来测试效果。
本题代码在5行左右,涉及到的知识点包括:
循环语句,主要for...in循环;
输入输出处理,重点是print()函数;
字符串处理;
本题比较简单,基本上是送分题,关键是熟练掌握Python格式化输出的细节,尤其是print()函数的sep和end参数。
在平常学习Python编程的时候,尽量多了解并使用Python内置函数,这样可以大大提升编程效率,也避免重复造轮子。
Python之所以大受欢迎,其中很重要的一点就是有大量的内置函数和第三方模块,一定要多运用。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香
需要源码的,可以移步至“超平的编程课”gzh。