九九乘法表-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python**蓝桥杯真题解析100讲》,**这是解读系列的第13讲。

**九九乘法表,**本题是2019年~2020年举办的第11届蓝桥杯青少组Python编程选拔赛真题(具体日期不详),题目要求编程输出一个排版整齐的九九乘法表。

先来看看题目的要求吧。

一.题目说明

编程实现:

请编写程序输出如下图所示的九九乘法表。

九九乘法表一共要分九行输出,输出样式如下图,并要求排版整齐。

提示信息:

print(*objects, end='\t')能够将多个输出自动对齐。

输入描述:

输出样例:

评判标准:

  • 30 分:能够输出任一行乘法口诀,不论排版与样例是否相同;

  • 50分:能够正确输出完整的乘法表,不论排版与样例是否相同;

  • 100分:完全符合题目要求,输出格式与样例完全一致。

二.思路分析

这是一道打印字符串效果的题目,考察的知识点包括嵌套循环和字符串操作。

乘法口诀也叫"九九歌",在我国很早就已产生。远在春秋战国时代,九九歌就已经有着广泛地运用。

如今,九九乘法表是小学二年级的数学知识,是我们学习乘法的基础,几乎每个小朋友都能够熟练地背诵出来。

对于熟练掌握嵌套循环的同学来说,本题是比较简单的,但对于初学者来说,还是有点难度。

任何一个复杂的问题,我们都可以将其拆分成多个简单的问题。因此,我们可以将本题拆分成如下4个部分:

  • 直接输出单个乘法算式

  • 使用变量输出单个乘法算式

  • 输出指定行的乘法算式

  • 输出完整的乘法表

先从第一步开始,直接输出单个乘法算术,是不是非常的简单,代码如下:

print("3 * 4 = 12")

这里的数字,可以是任何数字。

接下来是第二步,使用变量输出单个乘法算式,我们用变量a和b表示两个乘数,对应的代码如下:

print(str(a) + "*" + str(b) = a * b)

需要注意,对于等号左边的部分,需要原样输出数字,不能直接写 a * b,应该使用字符串连接运算。

由于a和b都是数字,需要先转换成字符串再进行连接运算,否则会报错。

然后是第三步,输出指定行的乘法算式。

如果行数为4,需要输出如下4个算式:

1*4=4 2*4=8 3*4=12 4*4=16 

如果行数为5,需要输出如下5个算式:

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

找到这里面的规律了吗?

对于给定行数,乘法算式的个数刚好等于当前行数,而乘法算式中的两个乘数,一个是固定的,就是当前行数,另一个则是从1开始,每次增加1,截止到当前行数。

如果使用变量i表示行数,上面的算式可以表示如下:

1*i=1*i 2*i=2*i 3*i=3*i 4*i=4*i ......

其实,每个乘法算式基本上都是一样的,可以使用循环来实现,代码如下:

for j in range(1, i+1):  print(str(j) + "*" + str(i) = i * j)

最后一步,也比较简单,再使用一个循环输出多行就可以了。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们编写代码如下:

代码不难理解,需要强调3点:

1). range(start, end)函数的特点是虎头蛇尾(也可以形容为顾头不顾腚,它包含起始点start,不包含end),start的默认值为0,我们需要根据实际情况来确定start和end;

2). print()函数,默认以换行字符结束,可以使用end参数来指定结束的符号,题目给出了提示,使用'\t',这里的'\t'是转义字符,表示制表符,在Python编程中,一般占4个空格;

3). 一行乘法算式打印完毕,需要换行,需要单独使用一个print()语句。

运行程序,效果如下所示:

至此,整个程序就全部完成了。

四.总结与思考

本题的分数为100分,代码在5行左右,涉及到的知识点包括:

  • 循环语句,主要是for...in循环

  • range()函数的特点及用法;

  • 嵌套循环;

  • 字符串处理,包括连接运算和类型转换;

  • print()函数的灵活运用;

题目难度一般,代码量非常小,关键是熟练掌握嵌套循环的用法。

短短的四五行代码,就可以打印出一个漂亮的九九乘法表,相信你已经感受到循环的强大了。实际上,循环是计算机最擅长的事情,也是我们学习在编程时使用最多的结构。

对于初学者来说,要理解嵌套循环是需要一个过程的,所以超平老师建议初学者按照前面的思路分析,将一个复杂的问题拆分成几个简单的问题。简单到什么程度呢,其标准就是这个简单问题是自己非常熟悉的。

不仅仅是在学习编程时才会用到拆分的思维和技巧,对于任何知识的学习,任何问题的解决,都可以采用这种思维,你会变得越来越厉害的。

超平老师给你留一道思考题,上面的代码是按行的顺序打印乘法表的,如果要求按列的顺序来打印乘法表,该怎么实现呢,赶紧动手试试吧。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至"超平的编程课"gzh。

相关推荐
yannan2019031312 分钟前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁22 分钟前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev23 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子37 分钟前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python42 分钟前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
千天夜1 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python
羊小猪~~1 小时前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
放飞自我的Coder2 小时前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词