打印图形(循环嵌套专项练习)
本文的设计意图:《打印图形》专项练习的编写是为了帮助学生进一步理解掌握循环嵌套的设计编写,重点是学会分析循环变量之间的关系
提示:初学者在学习编程时最大的坏习惯就是不用草稿纸,眼高手低,拿到题目还没有想好算法就动手写程序,走一步看一步,这样写出的程序往往会存在各种各样的问题,最终浪费大量的时间去进行调试,学习到后期当问题较难没有思路时,便只能坐在电脑前发呆走神,数学练习没有草稿纸我们还可以在试卷上写写画画,编程如果没有草稿纸只能陷入空想,请同学们切忌切忌!!!
思考问题的过程中遇到困难,笔和纸将会是你最强大的武器,可以帮助你劈砍出你的算法思路。
文章目录
- 1、矩形
- 2、直角三角形1
- 3、直角三角形2
- 4、直角三角形3
- 5、直角三角形4
- 6、等腰三角形1
- 7、等腰三角形2
- 8、菱形三法(三种方法都得会)
- 9、圆形
- 10、自主练习
1、矩形
打印图形如下
******
******
******
******
******
******
分析:不难想到使用循环嵌套来打印这个6行6列的图形矩阵,外层循环控制打印的行数,内层循环控制每行打印的个数,。
注意:每个“*”打印完后不换行,故需加上end="",每一行打印完后需要换行,print()的作用就是换行
最终得到标程如下:
for i in range(6): #行数for j in range(6): #列数print("*",end="") #每个“*”打印完后不换行:end=""print() #打印完一行后换行
2、直角三角形1
打印图形如下
*
**
***
****
*****
******
提示:本题外层循环变量取值建议从1开始,如从0开始,那么内层循环则需从-1开始数
for i in range(1,7):for j in range(i):print("*",end="")print()
3、直角三角形2
打印图形如下
******
*****
****
***
**
*
提示:本题没有上面两题容易直观地看出结果,此时就需要我们拿出草稿纸,在纸上列出内外循环变量的取值变化情况
i | j |
---|---|
1 | 6 |
2 | 5 |
3 | 4 |
4 | 3 |
5 | 2 |
6 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式:j=7-i
for i in range(1,7):for j in range(7-i):print("*",end="")print()
4、直角三角形3
打印图形如下***************
******
提示:本题仍然是打印6行“ * ”,但是每行先要打印空格,再打印“ * ”,故代码框架如下:
for i in range(1,7):#循环打印空格for k in range(_____):print(" ",end="")#循环打印*for j in range(_____):print("*",end="")print()
再列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 5 | 1 |
2 | 4 | 2 |
3 | 3 | 3 |
4 | 2 | 4 |
5 | 1 | 5 |
6 | 0 | 6 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=6-i
j=i
故代码如下:
for i in range(1,7):#循环打印空格for k in range(6-i):print(" ",end="")#循环打印*for j in range(i):print("*",end="")print()
5、直角三角形4
打印图形如下
*********************
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 0 | 6 |
2 | 1 | 5 |
3 | 2 | 4 |
4 | 3 | 3 |
5 | 4 | 2 |
6 | 5 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=i-1
j=7-i
故代码如下:
for i in range(1,7):#循环打印空格for k in range(i-1):print(" ",end="")#循环打印*for j in range(7-i):print("*",end="")print()
6、等腰三角形1
打印图形如下*************************
***********
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 5 | 1 |
2 | 4 | 3 |
3 | 3 | 5 |
4 | 2 | 7 |
5 | 1 | 9 |
6 | 0 | 11 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=6-i
j=2*i-1
故代码如下:
for i in range(1,7):#循环打印空格for k in range(6-i):print(" ",end="")#循环打印*for j in range(2*i-1):print("*",end="")print()
7、等腰三角形2
打印图形如下
************************************
列出内外循环变量的取值变化情况
i | 空格k | 星号j |
---|---|---|
1 | 0 | 11 |
2 | 1 | 9 |
3 | 2 | 7 |
4 | 3 | 5 |
5 | 4 | 3 |
6 | 5 | 1 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=i-1
j=13-2*i
故代码如下:
for i in range(1,7):#循环打印空格for k in range(i-1):print(" ",end="")#循环打印*for j in range(13-2*i):print("*",end="")print()
8、菱形三法(三种方法都得会)
打印图形如下*************************
************************************
方法一:: 图中可以看出k和j关于第6行对称,由此列出内外循环变量的取值变化情况
i | 空格k | 星号j | abs(i-6) |
---|---|---|---|
1 | 5 | 1 | 5 |
2 | 4 | 3 | 4 |
3 | 3 | 5 | 3 |
4 | 2 | 7 | 2 |
5 | 1 | 9 | 1 |
6 | 0 | 11 | 0 |
7 | 1 | 9 | 1 |
8 | 2 | 7 | 2 |
9 | 3 | 5 | 3 |
10 | 4 | 3 | 4 |
11 | 5 | 1 | 5 |
从上表中我们可以分析出内外循环变量的关系表达式如下:
k=abs(i-6)
j=11-2*abs(i-6)
故代码如下:
for i in range(1,12):#循环打印空格for k in range(abs(i-6)):print(" ",end="")#循环打印*for j in range(11-2*abs(i-6)):print("*",end="")print()
方法二:因为菱形是对称图形,因此考虑将循环遍历i也取对称值-5至5(range(-5,6)),由此列出内外循环变量的取值情况如下
i | 空格k | 星号j |
---|---|---|
-5 | 5 | 1 |
-4 | 4 | 3 |
-3 | 3 | 5 |
-2 | 2 | 7 |
-1 | 1 | 9 |
0 | 0 | 11 |
1 | 1 | 9 |
2 | 2 | 7 |
3 | 3 | 5 |
4 | 4 | 3 |
5 | 5 | 1 |
从这张表中我们更加容易分析出内外循环变量的关系如下:
k=abs(i)
j=11-2*abs(i)
最终得到代码如下:
for i in range(-5,6):#循环打印空格for k in range(abs(i)):print(" ",end="")#循环打印*for j in range(11-2*abs(i)):print("*",end="")print()
方法三:曼哈顿距离:标明两个点在标准坐标系上的绝对轴距总和,例如在平面上,坐标(x1,y1)的i点与坐标(x2,y2)的j点的曼哈顿距离为:
d(i,j)=|X1-X2|+|Y1-Y2|
不难看出,菱形中所有点至中心点(6,6)的曼哈顿距离均小于等于5
标程如下:
for i in range(1,12):for j in range(1,12):if(abs(i-6)+abs(j-6)<=5):print("*",end="")else:print(" ",end="")print()
提示:根据“曼哈顿距离”也可打印出等腰三角形,请同学们自行尝试
9、圆形
题目描述:打印一个半径为50的" * "圆形。(勿须使用matplotlib模块来绘图)
提示:与“曼哈顿距离”原理类似
标程如下:
for i in range(1,100):for j in range(1,100):if((i-50)**2+(j-50)**2<=50**2):print("*",end="")else:print(" ",end="")print()
提示:如果屏幕显示不下圆形可以把字体调小,但是打印出来大家可能会看到一个不那么圆滑的“椭圆”(手动滑稽),这是因为“ * ”的输出码(字形码)并非正方形而是一个长方形点阵,而且行与行之间也有一定的间隙。
Python中有专门的绘图库如matplotlib来进行绘图,后续教学中会进行讲解。
10、自主练习
打印图形如下
************************************************************
***********
方法:参照本文之前所讲述的,首先列出内外循环变量的取值变化情况,再从表中分析出循环变量之间的关系表达式,算法设计完成后再编写代码。
打印图形(循环嵌套专项练习)相关推荐
- 循环嵌套案例——九九乘法表
打印输出九九乘法表: 在打印九九乘法表之前,先来看一个简单的循环嵌套案例: 打印 % %% %%% %%%% 在循环嵌套中,外层循环为行,内层循环为列. #include<iostream> ...
- 循环结构(打印图形专项练习)
提示:初学者在学习编程时最大的坏习惯就是不用草稿纸,眼高手低,拿到题目还没有想好算法就动手写程序,走一步看一步,这样写出的程序往往会存在各种各样的问题,最终浪费大量的时间去进行调试,学习到后期当问题较 ...
- 循环嵌套之经典图形打印
图形打印能更有效.更灵活运用流程控制这块知识点,更好的掌握其内在含义. 打印以下经典图形 代码 public class Picture {public static void main(String ...
- java演练 循环嵌套 菱形图案的打印 四个阶段完成输出
java演练 循环嵌套 菱形图案的打印 阶段一,视频 https://www.ixigua.com/6870331861256634894/ 阶段一,数据分析 阶段二,视频 http://mp.tou ...
- 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】
首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...
- 双层循环嵌套打印矩形 java
双层循环嵌套打印矩形 java public class testone {public static void main(String[] args) {// 打印多行内容 假设打印line_num ...
- 利用for循环打印图形
利用for循环打印图形 利用for循环打印图形时,我们需要记住外层循环列,内层循环行,然后们需要做的不外乎是找到它们循环的规律罢了. 打印矩形图形 打印: ***** ***** ***** **** ...
- python用双重循环输出菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- python中for循环打印菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
最新文章
- the user operation is waiting for building workspace to complete解决办法
- Redis详解和实战--云平台技术栈16
- lucene源码分析(8)MergeScheduler
- Matlab---傅里叶变换---通俗理解(二)
- EMMC与NAND FLASH核心对比
- ups计算软件_ups不间断电源系统分类及作用
- airpods2突然变得很小声_11岁女孩胸部发育被同学取笑,穿束胸衣上课突然晕倒...
- Docker学习总结(41)——三个技巧,将Docker镜像体积减小90%
- Opium推出针对跨链资产桥安全性的保险服务Bridge Protection
- 浅谈最短路径的几个方法(Dijkstra,Bellman-Ford,SPFA,Floyd算法)
- Python 装饰器的八种写法
- MATLAB实验总结定积分,matlab实验报告--定积分的近似计算 -
- 软件工程师的衰落与程序员的崛起
- request.getParameterValues()
- 基于NRF24L01的CAN数据透传
- angular 自定义打包文件名
- 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略
- 【概念】权限管理模型(RBAC、ABAC、ACL)
- Arduino电位器控制
- 【181125】VC++ 绘制立方体的生成与控制旋转程序源代码
热门文章
- 《Spring源码深度解析 郝佳 第2版》SpringBoot体系分析、Starter的原理
- mac mysql my.cnf无效_mac 中 mysql 配置my.cnf无效解决办法-Go语言中文社区
- Aruba DHCP Option上线配置
- js 求幂 Math.pow()/指数运算符`**`
- 幼儿园体质测试软件,幼儿园儿童体质测试标准.doc
- 了解内网、外网、宽带、带宽、流量、网速
- Garmin社招 -- 面试总结复盘
- Missing-Tag Detection With Unknown Tags理解+翻译+引文简介
- JS计算俩个日期之间相差的天数,过滤节假日和周末
- 使用Fiddle对夜神模拟器进行抓包