九九乘法表-第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。

相关推荐
算法小白(真小白)2 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
Chinese Red Guest3 小时前
python
开发语言·python·pygame
骑个小蜗牛3 小时前
Python 标准库:string——字符串操作
python
不过四级不改名6774 小时前
蓝桥杯嵌入式备赛教程(1、led,2、lcd,3、key)
stm32·嵌入式硬件·蓝桥杯
TT哇4 小时前
*【每日一题 提高题】[蓝桥杯 2022 国 A] 选素数
java·算法·蓝桥杯
黄公子学安全5 小时前
Java的基础概念(一)
java·开发语言·python
程序员一诺6 小时前
【Python使用】嘿马python高级进阶全体系教程第10篇:静态Web服务器-返回固定页面数据,1. 开发自己的静态Web服务器【附代码文档】
后端·python