打印菱形-第11届蓝桥杯选拔赛Python真题精选

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

打印菱形,本题是2019年~2020年举办的第11届蓝桥杯青少组Python编程选拔赛真题(具体日期不详),题目要求根据输入的字符和数字,打印一个菱形图形。

先来看看题目的要求吧。

一.题目说明

编程实现:

输入一个半角英文字符和一个3 ~ 19之间的奇数 , 输出由英文字符构成的菱形图形,输入的数值为菱形中间最长一行中英文符号的个数。

输入描述:

第一行,构成菱形的半角英文字符 ;

第二行,菱形中最长一行英文符号的个数。

输出描述:

由英文符号构成的菱形。

样例输入:

*

11

样例输出:

评分标准:

  • 10分:能用输入的英文字符输出菱形, 不论输出的字符数量和形状是否正确 ;

  • 30分:至少对一个随机的评判用例 ,能输出高度符合要求的形状,不要求形状完全正确;

  • 50分:完全符合题意,即对所有评判用例均 能给出正确输出。

二.思路分析

这是一道打印图案的题目,也是学习Python基础语法时常见的一类题目,考查的知识点包括循环和字符串操作。

本题的难点是如何找到菱形图形的规律,具体来说,就是给定一个行数i,就可以输出第i行的空格和英文字符。

为方便分析和理解,超平老师将题目给出的样例数据,绘制一个表格如下:

图片

你找到这其中的规律了吗?

输入的数字是11,一共有11行字符,可以分成如下3个部分:

  • 前5行,

  • 中间行

  • 后5行

前5行,每一行的空格数量从5开始,依次递减1,分别是5、4、3、2、1;每一行的*则从1开始,依次递增2,分别是1、3、5、7、9。

中间行,即第6行,没有空格,一共有11个*。

后5行和前5行刚好相反,每一行的空格数量从1开始,依次递增1,分别是1、2、3、4、5;每一行的*则从9开始,依次递减2,分别是9、7、5、3、1。

如此一来,问题就变简单了,针对行数为11的情况,只要处理好前5行就可以。推而广之,如果是n行,则只需要处理好前(n//2)行就ok了。

在Python中,for...in循环默认是从0开始的,

for i in range(n//2)

所以,i = 0表示第一行,i = 1表示第二行,根据前面的分析,可以得出如下对应关系:

第i行空格数:n//2 - i第i行字符数:i * 2 + 1

对于中间行,只需要输出n个字符即可。

而后n//2行,只需要将前n//2行倒过来循环就可以,每一行的空格数和字符数还是遵循上面的关系。

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

三.编程实现

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

图片

代码不难理解,简单说明3点:

1). 在取中间行的时候,需要使用整除,Python提供了整除运算符//,如果不记得的话,也可以先使用除法/,然后再取整,如下:

mid = int(n / 2)

2). 在Python中,*运算符用途广泛,可以用于重复指定的字符和字符串,从而避免了使用循环结构;

3). Python中的range()函数,具有虎头蛇尾的特性(包含第一个,不包含最后一个),其完整的用法如下:

range(start, stop[, step])start: 计数从start开始。默认是从0开始;stop: 计数到stop结束,但不包括stop;step:步长,默认为1。

所以,在倒序循环的时候,需要将步数设置为负数,同时要注意start和stop的值,确保临界值正确无误。

当输入*和11,效果如下:

当输入#和9时,效果如下:

图片

当输入$和13时,效果如下:

至此,整个程序就全部完成了,你也可以输入不同的符号和数字打印各种菱形效果。

四.思考与总结

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

  • 输入处理,主要是类型转换

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

  • range()函数的特点及灵活运用;

  • 字符串运算,包括*运算符和连接运算,;

题目难度一般,考查的都是基础知识点,难点在于如何找到菱形图案的规律并进行简化。

对于基础知识点,千万不可忽略,尤其是一些好用的编程技巧。比如本题中的整除运算符//、字符串重复运算符*、字符串连接运算符+以及range()函数的细节,灵活运用这些小技巧,可以极大地提升编程效率。

寻找菱形图案的规律,对大部分同学来说,难度不大,关键在于如何将复杂的问题进行拆分,变成简单问题。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/166335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周转箱与工具柜的智能化应用

在当今制造业激烈竞争的市场中,6S管理方法作为提高企业竞争力的有力工具,与精益生产中的周转箱和工具柜相结合,将为企业带来更大的优势。通过实施6S管理方法,企业不仅能够提高生产效率、降低成本,还能够改善产品质量、…

GDPU 数据结构 天码行空11

文章目录 数据结构实验十一 图的创建与存储一、实验目的二、实验内容三、【实验源代码】🍻 CPP版🍻 c 语言版🍻 java版 四、【实验结果】五、【实验总结】 数据结构实验十一 图的创建与存储 一、实验目的 1、 理解图的存储结构与基本操作&a…

nf_conntrack内核模块常见问题

nf_conntrack内核模块常见问题 问题描述排查步骤前置条件:启用nf_conntrack内核模块检查nf_conntrack配置 解决办法1:半数减少nf_conntrack buckets的值解决办法2:加倍调大m.min_free_kbytes值解决办法3:Linux社区权威答复-忽略告警 问题描述 内核报错 falling bac…

什么是 npm —— 写给初学者的编程教程

原文链接: 什么是 npm —— 写给初学者的编程教程 自 2009 年以来,Node.js 一直席卷全球。成千上万个系统基于 Node.js 构建,促使开发者在社区宣称“JavaScript 正在吞噬软件”。 Node 成功的主要因素之一是它广受欢迎的软件包管理器——np…

前k个高频单词(C++实现)

前k个高频单词 题目思路代码代码讲解 题目 思路 通过统计字符串的出现次数,并根据出现次数和字典序对字符串进行排序,找出出现频率最高的前k个字符串。使用一个自定义的仿函数作为排序的比较函数,通过map容器进行统计,然后将结果…

Linux:strace 简介

文章目录 1. 前言2. 什么是 strace ?3. 使用 strace3.1 追踪指定进程3.1.1 通过程序名追踪进程3.1.2 通过 进程 ID (PID) 追踪程序3.1.3 追踪 子进程 或 线程 3.2 系统调用情况统计3.3 追踪过滤3.3.1 追踪指定的系统调用集合3.3.2 追踪对指定文件句柄集合操作的系统调用3.3.3 …

前端已死?看看我的秋招上岸历程

背景 求职方向:web前端 技术栈:vue2、springboot(学校开过课,简单的学习过) 实习经历:两段,但都是实训类的,说白了就是类似培训,每次面试官问起时我也会坦诚交代&…

关于鸿蒙网络请求的问题

https://developer.huawei.com/consumer/cn/forum/topic/0204136145853212268?fid0102683795438680754 鸿蒙OS 代码 import http from ohos.net.http;export const httpUtils (url: string, data: any) > {return new Promise((resolve, reject) > {let httpRequest …

创意设计与个性化定制:酒精壁炉的独特之处

在当今家居装饰的潮流中,人们越来越注重个性化和创意,而酒精壁炉正是在这一趋势中崭露头角。它不仅成为家居的温馨之选,更因其设计的灵活性而成为创意焦点,吸引了越来越多注重家居设计的人群。 酒精壁炉的设计灵活性为家居注入了新…

vue的package.json详细说明

前言 package.json 文件是一个非常重要的文件,它用于存储关于项目的元信息以及依赖项。在 Vue.js 项目中,package.json 文件描述了项目的名称、版本、描述、作者、依赖项、脚本命令等信息。 说明 package.json 文件常见的 详细说明: 1.名称 (name): 项目的名称。遵循反向…

工作流引擎架构设计

一个应用MIS的系统的架构离不开工作流引擎,具有流程引擎思维的架构人员设计系统的时候就有流程的思维,他区别于过程思维,过程思维开发出来的系统,用户面对的是菜单、模块。而流程思维设计出来的系统就是发起、待办、在途、查询、近…

SELinux refpolicy详解(2)

接前一篇文章:SELinux refpolicy详解(1) 本文内容引自: Documentation SELinuxProject/refpolicy Wiki GitHub 4. 入门指南 文档是参考策略的主要目标之一。入门指南(https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted)提供了有关编写参考策略模块的…

关于vue3项目中 vite.config.js项目配置 多个请求地址代理配置

关于VUE3 vite.config.js文件配置相关 提示:本文记录了我们项目中使用到了多个不同的接口请求前缀地址配置代理,如果有更好的优化方案欢迎大佬指点呀: 以下是我最近项目中的vite.config.js文件配置,由于刚开始vue3不久&#xff…

JS 类型转换机制

这篇写得不错: 百度安全验证 包括显示转换(就是调用函数)、隐式转换(运算符 - 时自动转换成数字/字符串) 注意到: abc-1 //NaN 非法字符转换为数字 结果是NaN

LeetCode 1410. HTML 实体解析器:字符串匹配

【LetMeFly】1410.HTML 实体解析器:字符串匹配 力扣题目链接:https://leetcode.cn/problems/html-entity-parser/ 「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。…

【点云surface】基于多项式重建的平滑和法线估计

1 介绍 基于多项式重建的平滑和法线估计(Smoothing and normal estimation based on polynomial reconstruction)是一种常用的点云处理方法,用于平滑点云数据并估计每个点的法线信息。 该方法基于Moving Least Squares(MLS&…

docker安装nacos,实现和mysql容器的通信

1.下载nacos镜像 docker pull nacos/nacos-server2. 启动nacos 启动命令如下: docker run -d -p 8848:8848 --name nacos \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e SPRING_DATASOURCE_PLATFORMmysql \ -e MYSQL_SERVICE_HOST192.168.131.223…

连接的原理(待修改)

搞数据库⼀个避不开的概念就是Join,翻译成中⽂就是连接。 相信很多⼩伙伴在初学连接的时候有些⼀脸懵逼,理解了连接的语义之后⼜可能不明⽩各个表中的记 录到底是怎么连起来的,以⾄于在使⽤的时候常常陷⼊下边两种误区: 误区⼀&…

linux磁盘清理

目录 排查过程1、查看磁盘占用情况2. 按照占用大小进行倒排-当前目录及其子目录3.当前目录磁盘占用情况 清理命令 排查过程 1、查看磁盘占用情况 df -hdf -h 命令用于显示磁盘空间的使用情况,以人类可读的方式呈现,其中:df 是 “disk free”…

“AI就绪”新计划,亚马逊云科技到2025年向200万人提供免费AI技能培训

AI就绪(AI Ready)计划 到2025年为全球200万人提供 免费人工智能(AI)技能培训和教育资源 亚马逊云科技宣布启动“AI就绪(AI Ready)”计划,旨在到2025年为全球200万人提供免费人工智能&#xff08…