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

相关推荐
山川而川-R2 分钟前
Windows安装ollama和AnythingLLM
人工智能·python·语言模型·自然语言处理
大地之灯24 分钟前
深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)
人工智能·python·深度学习·学习·算法
闲人编程33 分钟前
elasticsearch实战应用
大数据·python·elasticsearch·实战应用
彤银浦1 小时前
python学习记录6
python·学习
码农超哥同学1 小时前
Python知识点:如何使用EdgeX Foundry与Python进行边缘计算
开发语言·python·面试·编程·边缘计算
码农超哥同学1 小时前
Python知识点:如何使用OpenFaaS与Python进行无服务器边缘计算
python·面试·serverless·编程·边缘计算
SZPU领跑1 小时前
第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)
stm32·单片机·算法·职场和发展·蓝桥杯
杰哥在此2 小时前
Python知识点:如何使用Hadoop与Python进行大数据处理
开发语言·hadoop·python·面试·编程
deephub2 小时前
闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨
人工智能·python·语言模型·rag·嵌入模型
拾伍廿肆2 小时前
python - websocket
python·websocket·django