打印菱形-第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。
相关文章:
打印菱形-第11届蓝桥杯选拔赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第9讲。 打印菱形ÿ…...
『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具
搭建Squoosh图片在线压缩工具 前言一、Squoosh是什么?二、准备一台Lightsail实例1.进入控制台2.创建实例3.开放端口4.部署Squoosh5.预览 三、搭建反向代理1. 安装宝塔2. 配置反向代理3. 预览代理效果 提示:授权声明:本篇文章授权活动官方亚马…...
基于亚马逊云科技大语言模型等服务打造企业知识库
背景 大语言模型是自然语言处理领域的一项重要技术,能够通过学习大量的文本数据,生成具有语法和意义的自然语言文本。目前大语言模型已经成为了自然语言处理领域的一个热门话题,引起了广泛的关注和研究。 知识库需求在各行各业中普遍存在&a…...
FFmpeg 使用
添加关键帧 被压缩过的视频丢失关键帧导致seekTo无效,需要给视频添加关键帧 ffmpeg -i 2.mp4 -c:v libx264 -x264opts keyint5 -y keyint10.mp4修改分辨率 -i /sdcard/bankinfo/-484870439.mp4 -vf scale1920:1080 -threads 5 -preset ultrafast -y /sdcard/ban…...
NLP的使用
参考: Apache openNLP 简介 - 链滴 (ld246.com) opennlp 模型下载地址:Index of /apache/opennlp/models/ud-models-1.0/ (tencent.com) OpenNLP是一个流行的开源自然语言处理工具包,它提供了一系列的NLP模型和算法。然而,Open…...
Navicat DML 操作
在表格种插入 列信息 -- 修改数据 update 表名 set 列名 值1, 列名值2,[where 条件]; -- 注意:如果update语句没有加where 表里对应行的全部信息都会被改; -- 删除数据 delecte from 表名 [where 条件]; 未删除前: 执行删除后为: DQL - 条…...
Springboot-热部署-IDEA2023
方式一:jrebel 方式二: 1、导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <…...
人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?
增强现实技术和虚拟现实技术(AR/VR)发展前景广阔,备受各大企业关注。事实上,近四分之三的行业领导者表示,他们预计这些沉浸式技术将于未来五年内成为主流。高盛公司报告称,到2025年,AR/VR行业值…...
Linux进程通信之共享内存
文章目录 共享内存原理申请共享内存函数(shmget)参数key生成key值示例申请共享内存 挂接到进程地址空间函数(shmat)去关联函数(shmdt)控制共享内存(shmctl)IPC_STATIPC_RMID ipcs其余进程获取该共享内存进程间通信 进程间通信:IPC,…...
接口自动化测试:pytest基础讲解
为什么要做接⼝测试? 只靠前端测试很难确保很⾼的覆盖率。接⼝测试,可以模拟出各种类型的⼊参,包括⼀些在前端模拟不出来的⼊参,还能根据接⼝⽂档的定义,设计出相对完善的⼊参值,在接⼝层保证质量…...
基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现
基于JavaWebSpringBootVue医院管理系统小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 …...
收藏这几个开源库,写css你会笑出声
你是否遇到过写css没灵感,写不出酷炫的效果,那这篇文章你一定要看完。知道这几个开源库,它能让你写出炸天的效果并且有效地增加你的摸鱼时长。 1.CSS Inspiration 网址:https://chokcoco.github.io/CSS-Inspiration/#/ CSS Insp…...
给localStorage缓存添加全局监听器
需求:在做单应用页面的时候,每个组件都是独立的,有时候我们a组件里面的东西修改了,需要b组件进行在a组件修改的同时进行响应,就需要监听器,这种时候我们需要定义监听器并且在b组件里面监听,然后…...
blk_mq_init_queue函数学习记录
blk-mq编程,主要要调用两个函数进行初始化工作,blk_mq_init_queue这是第二个。该函数先是申请了struct request_queue结构,这个请求队列后面用于赋值给磁盘那个结构体的相应成员。 struct request_queue *blk_mq_init_queue(struct blk_mq_t…...
高防服务器的工作原理
在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种…...
2023.11.19使用flask制作一个文件夹生成器
2023.11.19使用flask制作一个文件夹生成器 实现功能: (1)在指定路径上建立文件夹 (2)返回文件夹的路径和建立成功与否的提示 main.py import os from flask import Flask, request, jsonify, render_templateapp F…...
【04】ES6:字符串的扩展
一、模板字符串 模板字符串是可以插入表达式的字符串字面量。模板字符串和传统字符串比较,存在以下特点: 1、使用反单引号 传统字符串字面量使用单引号 ‘’ 或者双引号 “”,模板字符串使用反单引号(backquote) …...
Docker可视化管理界面工具Portainer安装
Portainer是Docker容器管理界面工具,可以直观的管理Docker。 部署也很简单: 官方安装文档地址 1、创建数据卷 docker volume create portainer_data2、下载允许容器 docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restartalways -v /v…...
css实现水波纹效果
css实现水波纹效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…...
一种全新且灵活的 Prompt 对齐优化技术
并非所有人都熟知如何与 LLM 进行高效交流。 一种方案是,人向模型对齐。 于是有了 「Prompt工程师」这一岗位,专门撰写适配 LLM 的 Prompt,从而让模型能够更好地生成内容。 而另一种更为有效的方案则是,让模型向人对齐。 这也是…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
